我知道这个问题被问了很多次,看起来这个问题是重复的,但我试图理解 SO、Google、GoF 上的帖子,但没有找到适合我的答案......
我了解工厂方法和生成器之间的区别:工厂方法 - 创建从特定基类派生的对象,将具体实现与客户端解耦
Builder Method - 隐藏客户端创建对象的复杂性
现在我看到了我在互联网上找到的示例(依赖注入的抽象工厂设计模式),它是关于抽象工厂的,但这对我的问题无关紧要。这只是我查看的众多文章之一
//Abstract Factory for Dependency Injection
//Factory interface
public interface Module1ServiceFactory {
ComponentA getComponentA();
ComponentB getComponentB();
}
//Concrete factory
public class Module1ServiceFactoryImpl {
private Module1ServiceFactory instance;
private Module1ServiceFactoryImpl() {}
public static synchronized Module1ServiceFactory getInstance() {
if (null == instance) {
instance = new Module1ServiceFactoryImpl();
}
return instance;
}
*** SUBJECT METHOD ***
public ComponentA getComponentA() {
ComponentA componentA = new ComponentAImpl();
ComponentB componentB = getComponentB();
componentA.setComponentB(componentB);
return componentA;
}
public ComponentB getComponentB() {
return new ComponentBImpl();
}
}
我在该示例中看到, ComponentA 是一种复杂类型, getComponentA() 方法用于构建它。
- 那么为什么这被称为工厂而不是建造者???或者这意味着 Module1ServiceFactoryImpl 实现了 Factory AND Builder 模式?
- 在软件架构设计中创建实现多个设计模式的类/对象是否正确(常用)?
对不起我的英语:)