Проектирование классов - Форум администраторов игровых серверов
Форум администраторов игровых серверов StormWall - Защита от DDos атак
Регистрация Мнения Справка Сообщество Календарь
Вернуться   Форум администраторов игровых серверов > Полезное / Common > Программирование / Programming > Java

Java В данном форуме вы сможете найти много полезной информации по платформе Java. Подробные статьи, исходные коды и конечно учебники как для новичков так и профессиональных Java разработчиков вы найдёте здесь. Если у вас есть вопрос или хотите поделится своими наработками, пожалуйста, делайте это в этой теме.

Ответ
Опции темы
Непрочитано 13.04.2012, 11:26   #1
Аватар для shocked
Пользователь

Автор темы (Топик Стартер) Проектирование классов

Здавствуйте. Сабж. Есть 3 класса например TrafficCaptor с очень похожей функциональностью (на 80% одинаковые поля и методы), которую здорово было бы вынести в абстрактный класс и наследоваться от него. Но беда в том что классы уже наследуются от другого класса Task, который в свою очередь имплементит интерфейс Worker с кучей методов.
К лучше поступить в данной ситуации чтобы не дублировать код?
shocked вне форума Ответить с цитированием
Непрочитано 13.04.2012, 11:30   #2
Аватар для Azagthtot
Эксперт

По умолчанию Re: Проектирование классов

Цитата:
Сообщение от j4ckTheRipp Посмотреть сообщение
Здавствуйте. Сабж. Есть 3 класса например TrafficCaptor с очень похожей функциональностью (на 80% одинаковые поля и методы), которую здорово было бы вынести в абстрактный класс и наследоваться от него. Но беда в том что классы уже наследуются от другого класса Task, который в свою очередь имплементит интерфейс Worker с кучей методов.
К лучше поступить в данной ситуации чтобы не дублировать код?
Инкапсулирование.
Код:
interface iZz {
 public void foo();
 public void bar();
}
abstract class Zz {
 public void foo() {
   // some code here
 }
 public abstract void bar();
}

class Myzz extends Task implements iZz {
  private Zz _myZZ = new Zz() {
    public void bar() {
     // some code
    }   
 };
 public void foo() {
   _myZZ.foo();
 }
 public void bar() {
  _myZZ.bar();
 }
}
Azagthtot вне форума Отправить сообщение для Azagthtot с помощью ICQ Отправить сообщение для Azagthtot с помощью Skype™ Ответить с цитированием
Сказали спасибо:
Непрочитано 13.04.2012, 21:26   #3
Аватар для Хлорка
Пользователь

Lightbulb Re: Проектирование классов

Можно интерфейс сразу "заимплементить" к абстрактному квасу. В данном случае более разумно так, потому как методы foo, bar объявлены в интерфейсе. Все зависит от конкретно вашей задачи. В яве можно наследовать сразу несколько интерФейсов, в то время как класс только одинъ.

Код:
abstract class Zz implements iZz {
 public void foo() {
   // some code here
 }
 public abstract void bar();
}

class Myzz extends Task {
  private Zz _myZZ = new Zz() {
    public void bar() {
     // some code
    }   
 };
Хлорка вне форума Отправить сообщение для Хлорка с помощью ICQ Ответить с цитированием
Непрочитано 13.04.2012, 22:10   #4
Аватар для shocked
Пользователь

Автор темы (Топик Стартер) Re: Проектирование классов

Вариант Azagthtot`a делегировать методы немного не подошел, я просто имплементировал абстрактным классом то, что нужно
shocked вне форума Ответить с цитированием
Непрочитано 14.04.2012, 22:39   #5
Аватар для Хлорка
Пользователь

По умолчанию Re: Проектирование классов

Цитата:
Сообщение от j4ckTheRipp Посмотреть сообщение
...делегировать методы...
Я даже не пойму что это значит, звучит почти матом.

j4ckTheRipp, будешь со мной дружить?
Хлорка вне форума Отправить сообщение для Хлорка с помощью ICQ Ответить с цитированием
Непрочитано 15.04.2012, 02:50   #6
Изгнанные

По умолчанию Re: Проектирование классов

Хватит оффтопить.:
Свернуть ↑Развернуть ↓
L2scripts-Guard вне форума Отправить сообщение для L2scripts-Guard с помощью Skype™ Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при загрузке классов Megapolis Lineage II 0 28.10.2011 04:02
Как изменить статы классов [ADM]Itachi Архив 6 16.04.2011 21:14
Дерево классов Delakrua Движки сайтов (CMS) 0 09.12.2009 12:50
ID классов xMETTx Документация 2 04.12.2009 23:34
Кол-во вещей инвентаря разных классов [STIGMATED] Lineage II 2 26.12.2008 11:52


© 2007–2024 «Форум администраторов игровых серверов»
Защита сайта от DDoS атак — StormWall
Работает на Булке неизвестной версии с переводом от zCarot
Текущее время: 00:48. Часовой пояс GMT +3.

Вверх