【设计模式】工厂三姐妹
来源:互联网 发布:淘宝店如何刷流量 编辑:程序博客网 时间:2024/04/29 19:52
创建型模式中有这样三个模式:简单工厂、工厂方法、抽象工厂。这三个模式主要是针对软件设计中的“开放-封闭原则”和依赖倒转原则的。三个工厂主要功能就是帮助我们把对象的实例化部分抽取了出来,从而优化了代码的架构,并且增强了系统的扩展性。
一、简单工厂
1、结构图
2、简介
1)简单工厂:工厂对象根据参数不同返回不同类的实例
2)优缺点:①优点:工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖。
②缺点:工厂类职责太,违反了单一职责原则。如果要增加类,就要修改工厂类,违反了开放-封闭原则。
3、理解
简单工厂其实就是在客户与实例中增加了一个中介,客户想要什么,中介就根据你的需求给你什么,完成了客户端和具体对象的初步的解耦。就像学校的自助饮品机,我们只需要选择需要的饮料,当然还要交钱,饮料机就可以给我们想要的饮料,很是方便。但是如果我想要矿泉水,内部结构和算法还有外观都需要改变,那可就麻烦了。
二、工厂方法
1、结构图
2、简介
1)工厂方法:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。
2)优缺点:①优点:工厂方法克服了简单工厂违背开放-封闭原则的缺点,又保持了封装对象创建过程的优点。
②缺点:工厂方法把简单工厂的内部逻辑判断移到了客户端代码来进行,如果增加一个产品,就要修改客户端。
3、理解
工厂方法模式是简单工厂模式的进一步抽象和推广,有一个抽象的Factory类(可以是抽象类和接口),这个类将不在负责具体的产品生产,而是只制定一些规范,具体的生产工作推延到其子类去完成,可以在不改变工程的情况下增加新产品。
三、抽象工厂
1、结构图
2、简介
1)抽象工厂:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
2)优缺点:①优点:抽象工厂易于交换产品系列,而且让具体的创建实例过程与客户端分离。
②缺点:在产品级上来看是优化了,但是如果要增加功能,比如再增加一个ProductC,那么需要改动的就太多了。
3、理解
抽象工厂是对工厂方法的进一步优化。由于具体工厂类在一个应用中只需要在初始化的时候出现一次,使得改变一个应用的具体工厂变得非常容易,只需要改变具体工厂即可使用不同的产品配置,使系统耦合度逐渐降低,变得灵活。
四、总结
1、简单工厂:简单工厂模式通过工厂类接收的参数的不同来返回不同的对象实例。
2、工厂方法:工厂方法是针对每一种产品提供一个工厂类。通过不同的工厂实例来创建不同的产品实例。
3、抽象工厂:抽象工厂是应对整体产品来说的。
- 设计模式------工厂三姐妹
- 设计模式------工厂三姐妹
- 设计模式-工厂三姐妹
- 设计模式--工厂三姐妹
- 设计模式工厂三姐妹
- 【设计模式】工厂三姐妹
- 设计模式-工厂三姐妹
- 设计模式-工厂三姐妹
- 【设计模式】-工厂三姐妹
- 【设计模式】工厂三姐妹
- 设计模式--工厂三姐妹
- 设计模式之 工厂模式三姐妹
- 设计模式——工厂三姐妹
- 设计模式之工厂三姐妹
- 设计模式总结—工厂三姐妹
- 设计模式之工厂三姐妹
- 设计模式之工厂三姐妹
- 【设计模式】——工厂三姐妹
- Junit核心——测试集(TestSuite)
- FFmpeg注意事项
- UVA 1400 "Ray, Pass me the dishes!" (线段树)
- 81-从手机相册中读取照片
- 如果你的天猫魔盒不能看了
- 【设计模式】工厂三姐妹
- 采用pull解析xml文件
- 蓝桥杯 基础练习 数列特征
- 82-保存图片到手机相册
- PHP面向对象编程学习之一
- 83-随机生成颜色
- 软件架构分解--多维度的架构分解
- instruments
- Java堆栈的区别