Способ разделить большой класс и исправить цепочку наследования? - PullRequest
0 голосов
/ 18 ноября 2018

У меня был большой класс, Admin, в котором было слишком много отдельных методов с разной функциональностью и обращениями к базе данных, и им стало довольно сложно управлять, поэтому я решил разделить его, но теперь Admin несколькобесполезный.Я хочу, чтобы Admin наследовал все меньшие классы, но я могу думать только о цепочечном наследовании следующим образом:

public class Admin extends A {
//code in here
}

public class A extends B {
//code in here
}

public class B extends C {
//code in here
}

Ни один из методов в B не используется в A, ноЯ хочу использовать их в Admin.Это похоже на плохую практику, но я не знаю, как реализовать это по-другому.

Есть ли способ лучше создать этот класс, без необходимости помещать каждый метод из классов в Admin

1 Ответ

0 голосов
/ 18 ноября 2018

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

Например, вы можете иметь:

public interface Capable{
  public void doThis();
  public void doThat();
} 

И скажите, что B должен иметь эту спецификацию поведения, но не A, вы можете просто сделать:

public class B extends A implements Capable {
  //some other stuff
  public void doThis(){..}
  public void doThat(){..}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...