版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第二章 创建型设计模式,1.简单工厂模式,简单工厂模式根据提供给它的数据,返回几个可能类中的一个类的实例。 通常工厂返回的类都有一个共同的父类和共同的方法,但每个方法执行的任务不同,而且根据不同的数据进行了优化。,实例1:假设用户输入姓名时,存在两种形式,可以是“firstname lastname”形式或“lastname,firstname”形式。,public class Namer protected string frName, lName; public string Fname getreturn frName; public string Lname getreturn lNa
2、me; ,public class FirstFirst : Namer public FirstFirst(string name) int i = name.IndexOf( ); if (i 0) frName = name.Substring(0, i).Trim(); lName = name.Substring(i + 1).Trim(); else lName = name; frName = ; ,public class LastFirst : Namer public LastFirst(string name) int i = name.IndexOf(,); if (i
3、 0) lName = name.Substring(0, i); frName = name.Substring(i + 1).Trim(); else lName = name; frName = ; ,public class NameFactory public NameFactory() public Namer getName(string name) int i = name.IndexOf(,); if (i 0) return new LastFirst(name); else return new FirstFirst(name); ,实例2:学校登录系统 允许多个级别的用
4、户登录系统,通过登录名及口令来区分不同的用户级别,实例3:手机工厂,优 点: 隐藏了多个具有相似性的类之间的层次结构和创建规则,用户只需将创建条件通过参数传递给工厂,工厂就会自动将合适的对象传递给用户。,缺点: 相似性的类太多,会使工厂的创建逻辑很复杂,不利于修改和维护,2.工厂方法模式,工厂方法模式是对简单工厂模式进行了的扩展,它不是用一个专门的类来决定实例化哪一个子类。 相反,超类把这种决定延迟到每个子类。这种模式实际上没有决策点,即没有直接选择一个子类实例化的决策。 按这种模式编写的程序定义了一个抽象工厂类,它去创建对象,但让其子类决定创建哪一种对象。,兵工厂可以生产出战斗机器,但没有一
5、家工厂能够生产出所有的战斗机,坦克等,它们是由不同的厂家生产的,这就是工厂方法与简单工厂模式的差别.,优点: 1.工厂可以自主决定创建何种产品对象,创建细节被隐藏到具体工厂内部 2.添加产品时,只需增加新的产品类和相应的生产工厂,无需修改原有的产品和生产工厂,缺点: 添加产品时,需增加新的产品类和相应的生产工厂,因此系统会带来额外的开销,3.抽象工厂模式,抽象工厂提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 与工厂方法的最大区别是:工厂方法针对的是一个产品等级结构;而抽象工厂模式则针对的多个产品等级结构。,1.工厂方法中,一个具体工厂只提供一个生产接口;而抽象工厂方法的
6、具体工厂可提供多个生产接口 2.抽象工厂方法中,一个具体工厂生产的多种产品之间具有相关性,优点: 1.隔离了具体类的生产 2.保证同一个工厂生产的所有产品的相关性,缺点: 添加新的产品种类时,需在工厂层次中从上到下的添加生产该类产品的接口,4.建造者模式(Builder Pattern),为什么需要指挥者?,1.隔离了客户及生产过程 2.负责控制产品的生成过程,与抽象工厂模式的区别:,客户使用抽象工厂直接生成自己要用的对象;而建造者模式中,客户指导建造者如何一步步地构造一个得复杂对象,车间造车:,参见示例代码,将构造过程放到指挥者的方法中,指装配过程放到具体建造者类中。 如果产品的内部变化很复
7、杂,且产品的种类比较多,需要多个具体建造类,5.原型模式,工作原理:允许一个原型对象重新创建一个与自己一模一样的新对象。,参见颜色管理器示例,浅拷贝:如果B是A的克隆,如果对象中有一个属性是另一个对象的引用,则无论是改变了二者中某一个对象的该属性时,另一个对象的属性也会相应发生改变。,深拷贝:,6.单例模式(Singleton Pattern),确保某个类在整个系统中只有一个实例,这个类称为单例类。(如系统中的日志模块) 三个要点: 1.该类只有一个实例 2.该类必须自行创建这个实例 3.必须向整个系统提供这个实例,观察这段代码: class Spooler private static Sp
8、ooler ms_spooler = new Spooler(); private Spooler() public Spooler CreateInsance() return ms_spooler; ,观察这段代码: class Spooler private static Spooler ms_spooler; private Spooler() public Spooler CreateInsance() if(ms_spooler = null) ms_spooler = new Spooler(); return ms_spooler; ,观察这段代码: class Spooler private static Spooler ms_spooler; private
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026中国洗衣粉行业微商渠道发展现状与风险管控报告
- 2026量子计算行业技术发展趋势应用前景投资风险评估规划分析报告
- 2026中国橡胶行业市场分析及趋势前景与投资战略研究报告
- 药物养生测试题及答案
- 2026全球区块链技术应用市场供需分析及技术发展趋势研究
- 2026时尚设计行业市场消费者调研及品牌定位与产品创新研究报告
- 妇幼知识包测试题与答案
- 农业经济师考试典型试题及答案
- 水景景观工程监理细则
- 2026年数据治理工程师基础知识考核题库标准答案
- 2026天津石油职业技术学院招聘20人笔试备考题库及答案详解
- 2026年成都高新投资集团有限公司下属高新发展、社事投资公司公开招聘22人笔试参考题库及答案详解
- 2026年6月青少年软件编程Scratch等级考试一级真题(含答案)
- 平江2026年事业编招聘考试真题及答案解析
- 2026江苏连云港东海县事业单位招聘工作人员14人重点基础提升(共500题)附带答案详解
- 2026四川安信科创科技有限公司第一批招聘12人笔试备考题库及答案解析
- 机加工中心刀具寿命管理规范
- 法律服务采购服务方案投标文件(技术标)
- 品牌使用管理办法
- 咖啡店劳动合同书(标准版)
- 连续化生产管理制度
评论
0/150
提交评论