设计模式思想工厂模式

来源:互联网 发布:邮箱绑域名有什么用 编辑:程序博客网 时间:2024/05/29 15:50

工厂模式 分为

简单工厂模式(静态工厂模式)

工厂方法模式

抽象工厂模式


简单工厂模式什么样的呢?

用户A需要A产品,用户B需要B产品,直接找工厂要就行了。当然需要A产品类,B产品类,然后工厂根据用户需要的类型 ,给予构造相应的产品。

那么factory类中 ,就需要包含构建A类的成员函数,构造B类的成员函数。只要根据用户需求类型返回就行了。


但是如果用户C需要C 产品怎么办呢,这是 简单工厂模式 就需要修改工厂类,这就违反了开放封闭原则,开放是继承可以,封闭则是对类修改不行。


怎么办呢?


为了解决这个问题 出现了工厂方法模式。

为了不修改类,显然只有采用继承的方法,我可以有很多类来产生多个对象,但不能通过对一个类的修改来产生多个对象


因此可以定义一个工厂的抽象类。针对不同的产品定义一个对应产品的工厂。

这样 就把判断定义A产品还是B产品的任务 ,有工厂类,转移到了用户那里。


但是如果我此时需要的是 A和B产品呢?

那么就需要抽象工厂模式

抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口, 而无需指定它们具体的类.