创建模式总结

一、 创建模式的相关概念(学会封装)
1. 创建模式
(1) ~是对类的实例化过程的抽象化;
(2) 原因:系统在创建对象时,要创建哪些对象,如何创建对象需要动态地决定。
(3) 最终目的:创建模式描述怎样构造和封装对象创建的动态决定
2. 创建模式相关的设计原则
(1) 依赖倒转原则:
即:面向抽象的编程,在创建模式中反映出来的就是在客户端只对是面向接口/抽象类的编程,而不必具体到具体实现类。进一步地讲,也就是说类的实例化要推迟到其子类中。而这也是封装的一个基本要求。
其基本的实现方法,就是正确使用继承关系。这也是一种静态的方法,即:在编译阶段就确定的东西。
(2) 组合/聚合原则
在创建模式中,就是将一个对象的创建过程动态地委派给另外的一个对象。但其所依附的类仍然要遵循“依赖倒置”原则,因为只有这样才能真正实现面对抽象的编程。
总之,创建模式的关键:封装。而这也是学会面向对象与抽象的编程最基础的东西。封装做的不好,接口隔离、面向抽象的编程以及对象/类的结构模式及行为模式就无从谈起。因为只有封装做好了,才有可能做进一步的改进,而如果封装,其改进将没有了可实施的对象。
二、 常用的创建模式总结
1. 工厂模式
工厂模式重点强调的是如何将对象的创建过程按照用户/客户需求程度的复杂性而分门别类地隐藏起来其具体的创建细节。
(1) 简单/静态工厂
简单的if/else将产品创建的控制逻辑封装在工厂方法中,并由一个具体工厂负责所有产品的创建过程。所以,简单工厂只是对简单的控制逻辑的封装。只能实现一部分“面向抽象"的编程,即:隐藏了要创建的产品的具体实现过程,但所使用的工厂则是具体的,不是抽象的。
(2) 工厂方法
主要目的:将每一种产品的实例化时复杂的前提条件的初始化过程封装起来。而不只是简单地对静态工厂模式的改进。
此外,在客户端用户根本不知道具体的工厂是什么,所以在客户端决定要使用何种具体工厂时完全可以使用简单工厂的方法来做业务逻辑的判断。
(3) 抽象工厂
简称:工具箱模式
对一组相关产品的创建过程的隐藏。在表现形式上,虽然很像是工厂方法的扩展,但其出发点是根本不同的。其最终目的在于提供完整的整套相关产品的实例化过程,而不是完成每一类产品实例化时的复杂的初始化条件设置等目的。

总之:工厂模式,隐藏的是对象的创建过程,以“封装”为基础,完成面向抽象的编程。
2. 单例/多例模式
单例/多例模式重点强调的是对创建出来的对象的使用的限制,而对象本身的创建过程相对于工厂模式则非常简单。
(1) 单例模式
三个条件:
a) 类有且仅有一个实例
b) 类自行创建其实例(自行负责类自己的实例的初始化)
c) 类自行向系统提供其所创建的实例(系统对该类仅有的一个实例的使用,要受到此类的控制)
(2) 多例模式
一般情况是,一个类有多个自己的实例,但也是有限制的,而不是没有任何限制的。在多例模式中,一个类要自行创建、管理其自己的实例,其根本目的还是通过类来完成对类的实例的使用完成全局控制。只不过,多例模式生成的多个实例其状态或类型是有区别的。而如果将其类型/状态隐藏在内部的话,也可将多例类改造成单例模式,此时就要在单例中使用聚类集合来管理另一个类的多个实例(也就是多例类中所生成的多个实例)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值