我正在启动一个创建过程的过程,该过程进一步分为4个步骤,每个步骤代表一个类,我通过考虑单一责任原则将所有4个步骤分开。每个类由set get方法组成。到目前为止,我的代码是
public class manipulator{
private A a;
private B b;
private C c;
private D d;
public manipulator(){
a= new A();
b= new B();
c= new C();
d= new D();
}
//getters and setters of all 4steps
}
操纵器是包含所有4个步骤的主类,构造函数中的每个步骤都是进一步启动但我认为这是紧耦合系统,因为有启动内部构造函数。我应该如何在其中使用接口来提供抽象并使其松散耦合。
任何帮助将不胜感激。
答案 0 :(得分:0)
它可能是这样的(我不确定你使用的编程语言,所以把它当作伪代码):
class Manipulator {
private List steps;
public manipulator() {
this->steps = new List();
}
public add(Step step) {
this->steps->append(step);
return this; // you can chain add() calls
}
public run() {
foreach (step in this->steps) {
step->run();
}
}
}
这里有一个适合您步骤的数组,您不依赖于A,B,C,D类。你不要仅限于4步。
这些步骤本身应该有一个基类或接口,很可能它们总是有很多常见的东西:
class Step { // or abstract class Step or interface Step
public run() {
}
}
class StepA extends Step { ... }
class StepB extends Step { ... }
class StepC extends Step { ... }
class StepD extends Step { ... }
现在,您可以使用以下步骤配置操纵器:
manipulator = new Manipulator()
manipluator->add(new StepA())->add(new StepB())->add(new StepC())->add(new StepD())
manipulator->run()
需要考虑的其他几点: