当前标签: 设计模式

创建型设计模式定义和应用场景

2014-10-28 21:58:49

请关注唯心的个人微信公众号:craft6-cn(中划线,也可以搜索:领域驱动业务建模)

阅读《模式 —— 工程化实现及扩展》、《设计模式之禅》、《研磨设计模式》三本书。以及参考网上的若干篇文章收集而成,

本图并非设计模式教程,而是方便自己,以及对设计模式已经有所理解的读者开发备忘。


设计模式定义和应用场景 Craft6.cn 颜超敏.jpeg

============================================================= 创建型设计模式 定义和应用场景 Craft6.cn 颜超敏 ============================================================= ------------------------------------------------------------- 1 简单工厂模式 ------------------------------------------------------------- 1.1 定义 1.1.1 把目标实例的创建交给外部工厂来解决:new() 1.2 优势 1.2.1 让对象的调用者和对象创建过程分离 1.3 劣势 1.3.1 当产品修改时,工厂类也要做相应修改 1.4 场景和实例 1.4.1 游戏软件 1.4.1.1 不同的兵工厂造不同的兵种 1.4.1.2 兵工厂只管造兵,不关心兵的使用 1.4.2 四则运算的计算实现类的实例创建 ------------------------------------------------------------- 2 单例模式 ------------------------------------------------------------- 2.1 定义 2.1.1 控制某个类型的实例数量只有一个 2.2 优点 2.2.1 减少创建java实例带来的系统开销 2.2.2 便于系统跟踪某个实例的生命周期,实例状态等 2.2.3 允许自由创建每个类没有实际意义,还有可能造成系统性能下降 2.3 劣点 2.3.1 不适合分布式环境 2.3.1.1 可以通过指定服务器存放单例实例,通过Web Service访问 2.3.2 没有接口,扩展困难 2.3.3 不易测试 2.4 场景和实例 2.4.1 Windows的回收站 2.4.2 项目中全局性的共享访问或共享数据 2.4.2.1 网站计数器 2.4.3 应用程序的日志功能(因为当前的日志文件一直处于打开状态) 2.4.4 WEB应用的配置对象 2.4.5 数据库连接池(通常) 2.4.6 HttpApplication 一个应用只有一个,所有会话共享 ------------------------------------------------------------- 3 抽象工厂模式 ------------------------------------------------------------- 3.1 定义 3.1.1 核心目标和简单工厂模式一致 3.1.2 产品族(Product Family) 3.1.2.1 指存在等级、结构,功能相关联的不同产品类型组成的家族。 3.1.3 所谓的抽象工厂是指一个工厂实例可以创建出不同产品类型的一个产品族中的所有对象。 3.2 优点 3.2.1 封装性:一个工厂就可以生成一个产品族的所有产品对象 3.2.2 增加新的产品族符合开闭原则 3.3 劣点 3.3.1 对产品族增加新的产品类型不符合开闭原则 3.4 场景和实例 3.4.1 针对不同的操作系统生成相应的处理模块 3.4.1.1 如软件中有文本编辑、图片处理等功能 3.4.1.2 这些功能在不同操作系统中实现类是不一样的 3.4.1.3 通过抽象工厂的不同的操作系统工厂实现类获得功能的实例族 3.4.2 Dao持久化层的设计 3.4.2.1 目标对象用到多个Dao 3.4.2.2 Dao针对不同数据源、存储类型、访问方式、版本等 3.4.2.3 一个抽象工厂的实现类基于某种业务创建一组Dao实例 ------------------------------------------------------------- 4 创建者模式 ------------------------------------------------------------- 4.1 定义 4.1.1 用于创建复杂对象,完成从独立创建每个部分到最后的组装的整个系列的工作 4.1.2 适合产品局部加工过程变化较大,但组装过程相对固定 4.1.3 在类型定义的时候指定哪些步骤会被Builder执行,同时告知其执行次序,执行次数 4.2 优点 4.2.1 封装复杂对象的构造过程 4.2.2 创建者独立,容易扩展和控制风险 4.3 场景和实例 4.3.1 组装电脑 4.3.1.1 各个部分(CPU、主板、显示器....)差别大,但整体都是必需,而且组装过程相对固定 4.3.2 要创建的对象非常复杂,调用顺序不同会产生不同的效果 4.3.3 单证数据结构 4.3.3.1 构建复杂,变化频率不大 4.3.4 StringBuilder、StringBuffer ------------------------------------------------------------- 5 原型模式 ------------------------------------------------------------- 5.1 定义 5.1.1 从一个既有的对象“克隆”出一个新的实例 5.1.2 既有对象和克隆对象完全割裂,可以独立变化,相互不影响 5.2 优点 5.2.1 直接的内存二进制流拷贝,性能好 5.2.2 逃避构造函数的约束 5.2.2.1 也是缺点 5.3 设计注意 5.3.1 使用Java的Object.clone()是浅克隆,需要手工实现深层复制 5.3.2 使用原型模式的关键不在于定义原型接口,而在于如何又快又好完成克隆过程 5.4 场景和实例 5.4.1 通过new产生一个对象需要非常繁琐的数据准备或访问权限 5.4.2 类初始化需要消化非常多的资源,这个资源包括数据、硬件资源等。 5.4.3 一个对象需要提供给其他对象访问,而且各个调用者可能都需要修改其值时,可以考虑使用原型模式拷贝多个对象供调用者使用。 5.4.4 通常和工厂模式一起出现,通过克隆方法创建对象,然后由工厂方法提供给调用者


可通过扫描左侧二维码阅读本文。本站文章均为颜超敏原创,欢迎转载,请注明出处即可,转载可通过下面的社会化工具快速完成。

分享到:


为您推荐这些文章,如果感兴趣,请继续阅读吧:

创建型设计模式定义和应用场景

创建型设计模式, 单例模式, 创建者模式, 工厂模式, 抽象工厂模式, 原型模式

阅读《模式 —— 工程化实现及扩展》、《设计模式之禅》、《研磨设计模式》三本书。以及参考网上的若干篇文章收集而成,

本图并非设计模式教程,而是方便自己,以及对设计模式已经有所理解的读者开发备忘。


颜超敏,唯心六艺,Craft6.cn,电子商务博客,电子商务研发,电商研发,电子商务研究,电商研究,电子商务专家,电商专家,电子商务知识,电商知识,电子商务教程,电商教程,电子商务模式,电子商务平台,电子商务商业模式,电子商务数据库设计,电商数据库设计,电子商务系统分析,Java架构设计,Java软件架构,B2C,O2O,o2o模式,o2o电子商务,o2o电子商务平台,中国电子商务,电子商务平台建设方案
粤ICP备14060523号 Copyright @2014 -唯心六艺软件