【发布时间】:2018-05-11 05:09:32
【问题描述】:
请告诉我,抽象工厂 违反了单一责任的原则吗? (我认为他有很多责任)。
【问题讨论】:
标签: design-patterns single-responsibility-principle
请告诉我,抽象工厂 违反了单一责任的原则吗? (我认为他有很多责任)。
【问题讨论】:
标签: design-patterns single-responsibility-principle
抽象工厂有一个单一的职责,为创建多态对象提供契约,而不将接口绑定到特定的实现。换句话说,合同是它的责任,而不是制造对象。
SRP 适用于每个类,抽象工厂只是模式中的一个类,每个具体工厂都有不同但相似的职责。不要把责任看成一个单一的功能,它可以是一个复合的。
【讨论】:
计算责任时,“诀窍”是弄清楚责任的构成。当您考虑“对象创建的数量”时,一个复杂的工厂可以执行相当多的任务。但即使结果是一个相当复杂的对象图,工厂的 1 责任就是创建该图。
例如,为了使测试更容易,一个可怕的步骤序列可能会被分解为部分和子组件,但最终必须有人使用设置它所需的任何参数和依赖项来调用初始化器/构造器。那是工厂自己的责任。
【讨论】: