Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Проектирование классов
#1
Здавствуйте. Сабж. Есть 3 класса например TrafficCaptor с очень похожей функциональностью (на 80% одинаковые поля и методы), которую здорово было бы вынести в абстрактный класс и наследоваться от него. Но беда в том что классы уже наследуются от другого класса Task, который в свою очередь имплементит интерфейс Worker с кучей методов.
К лучше поступить в данной ситуации чтобы не дублировать код?
Ответ
#2
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();
}
}
Ответ
#3
Можно интерфейс сразу "заимплементить" к абстрактному квасу. В данном случае более разумно так, потому как методы 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
    }  
};
Ответ
#4
Вариант Azagthtot`a делегировать методы немного не подошел, я просто имплементировал абстрактным классом то, что нужно
Ответ
#5
j4ckTheRipp Написал:...делегировать методы...
Я даже не пойму что это значит, звучит почти матом.

j4ckTheRipp, будешь со мной дружить?
Ответ
#6
Хватит оффтопить.
Ответ


Перейти к форуму:


Пользователи, просматривающие эту тему: 1 Гость(ей)