HeadFirst 设计模式 4工厂模式(披萨店演变)
2015-08-13 11:29
323 查看
设计原则
要依赖于抽象,而不是具体类。
工厂方法模式(创建者+产品)
定义了一个创建对象的接口,但是由子类来决定实例化哪个类。工厂方法将类的实例化推迟到了子类。
工厂方法模式能够封装具体类型的实例化,如以下类图,抽象的Creator提供了一个创建对象的方法的接口,也称“工厂方法”。
“由子类来决定实例化哪个类”指在编写Creator时,不需要知道实际创建的产品是哪一个。选择了使用哪个子类,自然决定了实际创建的产品是什么。
抽象工厂模式(可以创建产品的家族)
提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。
抽象工厂允许客户使用抽象的接口来创建一组相关的产品,而不需要知道(关心)实际产出的具体产品是什么。
注意:
(1)工厂方法使用继承:把对象的创建委托给子类,子类实现工厂方法来创建对象。
(2)抽象工厂使用对象组合:对象的创建被实现在工厂接口所暴露出来的方法中。
(3)所有工厂模式都通过减少应用程序和具体类之间的依赖促进松耦合。
(4)工厂方法让类将实例化延迟到子类中进行。
(5)抽象工厂创建相关的对象家族,而不需要依赖他们的具体类。
(6)依赖倒置原则,指导我们避免依赖具体类型,而要尽量依赖抽象。
(7)工厂帮助我们针对抽象编程,而不是针对具体类编程。
要依赖于抽象,而不是具体类。
工厂方法模式(创建者+产品)
定义了一个创建对象的接口,但是由子类来决定实例化哪个类。工厂方法将类的实例化推迟到了子类。
工厂方法模式能够封装具体类型的实例化,如以下类图,抽象的Creator提供了一个创建对象的方法的接口,也称“工厂方法”。
“由子类来决定实例化哪个类”指在编写Creator时,不需要知道实际创建的产品是哪一个。选择了使用哪个子类,自然决定了实际创建的产品是什么。
抽象工厂模式(可以创建产品的家族)
提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。
抽象工厂允许客户使用抽象的接口来创建一组相关的产品,而不需要知道(关心)实际产出的具体产品是什么。
注意:
(1)工厂方法使用继承:把对象的创建委托给子类,子类实现工厂方法来创建对象。
(2)抽象工厂使用对象组合:对象的创建被实现在工厂接口所暴露出来的方法中。
(3)所有工厂模式都通过减少应用程序和具体类之间的依赖促进松耦合。
(4)工厂方法让类将实例化延迟到子类中进行。
(5)抽象工厂创建相关的对象家族,而不需要依赖他们的具体类。
(6)依赖倒置原则,指导我们避免依赖具体类型,而要尽量依赖抽象。
(7)工厂帮助我们针对抽象编程,而不是针对具体类编程。
相关文章推荐
- 解决升级了win10后,除了Edge外其他都上不了网,另外部分软件无法打开
- The high strength modified poplar core film faced formwork plywood
- mongoDB搭建和运行简单的增删改查操作
- js 页面无滚动条添加滚轮事件
- Window对象中的函数confirm方法的简单介绍
- 星系模拟器开发日志(一) 如何科学地用C++画图
- 第二周个人赛
- 1
- lucene创建index和搜索
- PHP Console工具使用分享
- C#实现计算一个点围绕另一个点旋转指定弧度后坐标值的方法
- c3p0连接池使用
- 《Objective-C基础教程》第9章 内存管理(未完)
- 在线app漏洞检测的检测方法
- 获取当天某个产品中用户的交易数量redis 零点过期数据
- java并发编程--AbstractQueuedSynchronizer的tryLock()方法分析(六)
- eclipse 异常退出 再进入 选择命名空间路径后自动闪退(自动闪退)
- 郁闷的BUG(在编辑器运行正常,在手机上只有场景显示)
- 通过MBean server监控weblogic应用
- java并发编程--ThreadLocal的用法和分析