工厂模式 分为
简单工厂模式
工厂方法模式
抽象工厂模式
简单工厂模式什么样的呢?
用户A需要A产品,用户B需要B产品,直接找工厂要就行了。当然需要A产品类,B产品类,然后工厂根据用户需要的类型 ,给予构造相应的产品。
那么factory类中 ,就需要包含构建A类的成员函数,构造B类的成员函数。只要根据用户需求类型返回就行了。
但是如果用户C需要C 产品怎么办呢,这是 简单工厂模式 就需要修改工厂类,这就违反了开放封闭原则,开放是继承可以,封闭则是对类修改不行。
怎么办呢?
为了解决这个问题 出现了工厂方法模式。
为了不修改类,显然只有采用继承的方法,我可以有很多类来产生多个对象,但不能通过对一个类的修改来产生多个对象
因此可以定义一个工厂的抽象类。针对不同的产品定义一个对应产品的工厂。
这样 就把判断定义A产品还是B产品的任务 ,有工厂类,转移到了用户那里。
但是如果我此时需要的是 A和B产品呢?
那么就需要抽象工厂模式
抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口, 而无需指定它们具体的类.