抽象工厂违反单一职责原则?
Abstract Factory violate Single Responsibility Principle?
请告诉我,抽象工厂违反了单一职责的原则? (我觉得他的责任很大)
计算责任的时候,"trick"就是要搞清楚什么是责任。当您考虑 "number of object creations" 时,一个复杂的工厂可以执行相当多的任务。但是,即使结果是一个相当复杂的对象图,工厂的第一个职责就是创建该图。
例如,一个庞大的步骤序列可能会被分解成多个部分和子组件,以使测试更容易,但最终必须有人调用 initializer/constructor 并带有它需要的任何参数和依赖项设置它。那是工厂自己的责任。
抽象工厂有单一职责,为创建多态对象提供契约,而不将接口绑定到特定实现。换句话说,合同是它的责任,而不是制造物体。
SRP适用于每个class,抽象工厂在模式中只有一个class,每个具体工厂都有不同但相似的职责。不要将职责视为单一功能,它可以是一个复合体。
请告诉我,抽象工厂违反了单一职责的原则? (我觉得他的责任很大)
计算责任的时候,"trick"就是要搞清楚什么是责任。当您考虑 "number of object creations" 时,一个复杂的工厂可以执行相当多的任务。但是,即使结果是一个相当复杂的对象图,工厂的第一个职责就是创建该图。
例如,一个庞大的步骤序列可能会被分解成多个部分和子组件,以使测试更容易,但最终必须有人调用 initializer/constructor 并带有它需要的任何参数和依赖项设置它。那是工厂自己的责任。
抽象工厂有单一职责,为创建多态对象提供契约,而不将接口绑定到特定实现。换句话说,合同是它的责任,而不是制造物体。
SRP适用于每个class,抽象工厂在模式中只有一个class,每个具体工厂都有不同但相似的职责。不要将职责视为单一功能,它可以是一个复合体。