请告诉我,抽象工厂 违反 单一责任的原则? (我认为他有很多责任)。
答案 0 :(得分:3)
抽象工厂有一个单一的职责,提供创建多态对象的合同,而不将接口绑定到特定的实现。换句话说,合同是它不负责制造对象的责任。
SRP适用于每个类,抽象工厂只是模式中的一个类,每个混凝土工厂都有不同但相似的责任。不要把责任视为一个单一的功能,它可能是一个复合。
答案 1 :(得分:0)
在计算责任时,“诀窍”是弄清楚什么构成了责任。当您考虑“对象创建的数量”时,复杂的工厂可以执行相当多的任务。但即使结果是一个相当复杂的对象图,工厂的责任就是创建该图。
例如,一个可怕的步骤序列可以分解为部分和子组件以使测试更容易,但最终有人必须使用设置它所需的任何参数和依赖关系来调用初始化器/构造函数。这是工厂本身的责任。