之前博客相关链接:
主要是三个角色:
最大的问题是:工厂类集中了所有产品的创建逻辑,形成了无所不能的全职类,违反了单一职责原则,最重要的是违反了开闭原则
工厂方法解决了简单工厂的缺点,简单工厂中的工厂就一个工厂类,工厂方法中抽象出一个顶层工厂。
分析下工厂方法中的角色:
抽象工厂:是工厂方法模式的核心,与应用程序无关。任何在模式中创建的对象的工厂类必须实现这个接口。
具体工厂:这是实现抽象工厂接口的具体工厂类,包含与应用程序密切相关的逻辑,并且受到应用程序调用以创建产品对象。
抽象产品:工厂方法模式所创建的对象的超类型,也就是产品对象的共同父类或共同拥有的接口
具体产品:这个角色实现了抽象产品角色所定义的接口。某具体产品有专门的具体工厂创建,它们之间往往一一对应。
优点:遵守了开闭原则、
缺点:每新增一个产品,都需要增加一个具体类和对象实现工厂,增大了开发量,另外系统复杂度也上升了。
可以认为从简单工厂、工厂方法一步步演化成抽象工厂。
相比于工厂方法,一个工厂不止于只生产一个具体产品。
原文:https://www.cnblogs.com/heliusKing/p/12229730.html