Я хочу стандартизировать общие действия, используя шаблон проектирования, но я не уверен, какой из них лучший.
Скажем, если мы начнем с двух сервисных Java классов с двумя операциями / методами каждый .
class Service1 {
public void performSomething() {
// Some complex algorithm implemented here
}
public void performSomethingElse {
// Some complex algorithm implemented here
}
}
class Service2 {
public void performSomething() {
// Some complex algorithm implemented here
}
public void performSomethingElse {
// Some complex algorithm implemented here
}
}
Два сервиса используют одни и те же алгоритмы, поэтому, естественно, я бы хотел провести рефакторинг performSomething()
и performSomethingElse()
. Мой подход заключается в создании двух классов с одним методом для каждого рефакторизованного метода.
interface Action {
public void run();
}
class PerformSomething implements Action {
public void run() {}
}
class PerformSomethingElse implements Action {
public void run() {}
}
class Service1 {
private PerformSomething algo1;
private PerformSomethingElse algo2;
public void businessUseCase1() {
algo1.run();
algo2.run();
}
}
Мне кажется, что этот простой подход наивен, и я уверен, что есть более подходящий шаблон проектирования, который может представлять действие вместо создание собственного интерфейса для представления действий.