Методы в классе с логикой другого класса должны быть статическими?
Например есть класс Human, у него есть некоторые поля, но действий которые он может выполнить очень много и нужно отделить его поведение в другой класс с логикой HumanLogic, можно ли эти действия там делать static методами? Если нет то как ими воспользоваться не создавая объекта HumanLogic?
Ответы (1 шт):
Автор решения: Elizaveta
→ Ссылка
Есть замечательная вещь, dependency injection)) "Правила хорошего тона" Статические методы/классы противопоказаны, их трудно тестировать/мокать
В идеале, можно воспользоваться функциональным программированием. Кривой пример:
public class HumanLogic {
public boolean solveProblem(Supplier<String> problemProvider) {
System.out.println("Solving " + problemProvider.get() + "..." ) ;
//stupid example
return true;
}
}
==============
public class Human {
private final HumanLogic brain;
//dependency injection!!
public Human (HumanLogic brain) {
this.brain = brain;
}
public void doSomething() {
boolean solved = brain.solveProblems(() -> "homework") ;
System.out.println ("Task solved? : " + solved) ;
}
public static void main(String... args) {
Human human = new Human(new HumanLogic()) ;
human.doSomething() ;
}
}
Както так