设计模式之工厂模式
2017-10-25 09:33
190 查看
工厂模式,创建型模式
顾名思义,工厂是用来生产批量货物的,比如你是4S店,你现在需要宝马、奔驰、保时捷车辆,你只需要把提货单交给工厂,然后工厂根据提货单将车辆送到你家4S店,你并不需要知道制作车的流程,这就是所谓的工厂。映射到类中,我们需要创建一个车工厂类(CarFactory),我们需要什么,比如宝马,就告知工厂类,然后让工厂类来进行实例化。
步骤1:创建接口Car
![](http://img.blog.csdn.net/20171025094543223?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveXhiMDk1MDFiaW4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
步骤2:创建实体类Benz(奔驰)、BMW(宝马)、等等,这些类去实现接口Car
![](http://img.blog.csdn.net/20171025094833106?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveXhiMDk1MDFiaW4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](http://img.blog.csdn.net/20171025094846907?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveXhiMDk1MDFiaW4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
步骤3:创建一个工厂,用来造这些车,也就是根据用户的要求来实例化哪种车。
![](http://img.blog.csdn.net/20171025095516399?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveXhiMDk1MDFiaW4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
步骤4:实体类已创建好,共产类也创建好,现在S4店发来提货单,我们需要根据提货单来实例化车的对象
![](http://img.blog.csdn.net/20171025100059489?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveXhiMDk1MDFiaW4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
步骤5:通过步骤4实例化了奔驰车和宝马车,那就可以将这些车送到4S店了。
如果4S店又新增保时捷车提货单,则应该怎么办呢?
首先:创建实体类Porsche(保时捷),
![](http://img.blog.csdn.net/20171025102008226?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveXhiMDk1MDFiaW4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
然后:在工厂类中新增Porsche的实例化,更改如下:
![](http://img.blog.csdn.net/20171025102024945?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveXhiMDk1MDFiaW4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
最后:在FactoryPatternDemo中,将所需要的提货单传给工厂。
![](http://img.blog.csdn.net/20171025102046327?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveXhiMDk1MDFiaW4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
工厂类的优点:不需要知道产品内部是怎么构造的,只需要知道名字就行,其他内部实现交给工厂类
工厂类的缺点:增加了一个Porsche车,则需要增加Porshce具体类,然后在工厂类需要去实现,
需要修改工厂类,当产品过多时,则需要经常修改工厂类,不符合“对扩展开放,对修改关闭”的原则。
顾名思义,工厂是用来生产批量货物的,比如你是4S店,你现在需要宝马、奔驰、保时捷车辆,你只需要把提货单交给工厂,然后工厂根据提货单将车辆送到你家4S店,你并不需要知道制作车的流程,这就是所谓的工厂。映射到类中,我们需要创建一个车工厂类(CarFactory),我们需要什么,比如宝马,就告知工厂类,然后让工厂类来进行实例化。
步骤1:创建接口Car
步骤2:创建实体类Benz(奔驰)、BMW(宝马)、等等,这些类去实现接口Car
步骤3:创建一个工厂,用来造这些车,也就是根据用户的要求来实例化哪种车。
步骤4:实体类已创建好,共产类也创建好,现在S4店发来提货单,我们需要根据提货单来实例化车的对象
步骤5:通过步骤4实例化了奔驰车和宝马车,那就可以将这些车送到4S店了。
如果4S店又新增保时捷车提货单,则应该怎么办呢?
首先:创建实体类Porsche(保时捷),
然后:在工厂类中新增Porsche的实例化,更改如下:
最后:在FactoryPatternDemo中,将所需要的提货单传给工厂。
工厂类的优点:不需要知道产品内部是怎么构造的,只需要知道名字就行,其他内部实现交给工厂类
工厂类的缺点:增加了一个Porsche车,则需要增加Porshce具体类,然后在工厂类需要去实现,
需要修改工厂类,当产品过多时,则需要经常修改工厂类,不符合“对扩展开放,对修改关闭”的原则。
相关文章推荐
- 2、设计模式__创建型__工厂方法
- 浅谈设计模式之一——简单工厂、工厂、抽象工厂
- 反射--工厂设计模式
- C#设计模式学习笔记---简单工厂模式
- Android 进阶之路:常见设计模式之工厂模式
- 用C++学习设计模式之 简单工厂模式
- iOS设计模式:工厂方法
- 工厂设计模式
- 设计模式学习笔记——工厂(Factory)模式
- 设计模式(工厂模式、单例模式、模板模式)
- js设计模式-工厂模式
- java设计模式笔记之简单工厂
- 配置型工厂设计模式
- 简单工厂设计模式计算器
- 《GOF设计模式》—抽象工厂(Abstract Factory)—Delphi源码示例:基于类的工厂
- 【设计模式之三工厂】
- 设计模式随笔-策略模式与简单工厂的区别
- 浅谈DAO工厂设计模式
- 设计模式:工厂和原型(清晰明了的对比)
- 研磨设计模式之工厂方法模式-3