




已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
创建型模式之我见创建型模式(Creational Pattern)是对类的实例化过程进行了抽象,能够使的软件模块做到与对象的创建和组织无关。为了使体系结构更加清晰,外界对于这些对象只知道他们的共同接口,而不需要清楚具体的实现细节。从而体现面向对象编程中的精髓- 面向接口编程。Simple Factory Pattern (简单工厂) 专门定义一个类来负责创建其他的类的实例。 被创建的实例通常都是具体的共同父类。 简单工厂模式有称为静态工厂方法模式,属于类的创建型模式。通常它根据自变量的不同返回不同的类的实例。简单工厂模式实质使由一个工厂类根据传入的参量,动态决定要创建出哪个产品的实例。简单工厂本不属于23个GOF模式 但它可以作为GOF的工厂方法模式的一个引导。现实中的例子- 国旗生产厂国旗有个共性,都是四方布做的,四方布就是他们的基础类,中国国旗,美国国旗,韩国国旗 等等 都是从四方布中-派生出来的。 国旗生产厂就是一个简单工厂。 根据客户的需求,生产不同的国旗。四方布(基类)中国国旗日 本国 旗韩国国旗国旗生产厂家根据客户的需求案例: 在线支付类型(银行卡,信用卡),手机销售(诺基亚,摩托罗拉)优势与缺陷在简单工厂模式中,工厂类是整个模式的关键所在。根据外界给定的信息,决定要创建具体的对象。摆脱了传统的外界直接创建具体产品的局面(自给自足实现),直接由工厂来决定。优点能够使客户端独立于产品的创建过程,并且在系统中引入新产品时,无需对客户端进行修改,缺点,当新产品进来时必须修改工厂类。但是对于简单工厂的确定也正是体现到在工厂类上。 由于所有的实例都在这里创建,从而使的工厂类变的巨大,违反了高内聚的责任分配原则。应用场景:1 工厂类负责创建的对象比较少。2 客户只知道传入工厂类的参数,对于如何创建对象不用关心。Factory Method Pattern 工厂方法模式工厂方法模式又称为工厂模式,也叫虚拟构造器模式或者多态工厂模式,属于类的创建型模式。在工厂方法模式中,父类负责定义创建对象的公共接口,而子类则负责生成的具体对象。 这样做的目的是将类的实例化过程操作延迟到子类中完成。即由子类来决定究竟应该实例化哪个类。其实在工厂模式就已经应用了单例模式,从始不到终它就只有一个工厂,单例模式不需要新建实例.(在后面补充单例模式中说明)现实例子兵工厂兵工厂战斗机器兵工厂战斗机器案例:扩展手机例子。优势与缺陷:工厂方法模式中,工厂方法用来创建客户所需要的产品,同时还向客户隐藏了那种具体产品类将实例化的细节。工厂方法模式的核心是一个抽象工厂类,各种具体的工厂类通过抽象工厂将工厂方法继承下来。如此使得客户可以只关心抽象产品和抽象工厂,完全不用理会返回是哪一种具体的产品。而不用关心具体的如何创建。 使用工厂方法模式的另一个优点是在系统中加入新产品的时候,无许修改抽象工厂和抽象产品提供的接口,无需修改客户端,也无需修改其他具体的工厂和具体的产品,而只需要添加一个具体的工厂和具体的产品就可以了。扩展性好点。 工厂方法模式在面向对象设计中使用了封装和委托来构造典型应用。封装通过抽象工厂实现,委托通过抽象工厂将创建的对象责任完全交给具体工厂来体现。缺点: 在增加新产品的时候,需要编写具体的产品类,同时还需要提供与之对应的具体工厂类。应用场景:1 类不知道自己要创建哪一个对象。2 类用它的子类来指定创建哪个对象。3 客户需要清楚创建哪一个对象。Abstract Factory Pattern 抽象工厂模式提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类,抽象工厂模式又称Kit 模式 属于对象创建型模式。 抽象工厂与工厂方法模式的区别在于: 工厂方法模式针对 是一个产品等级结构,而抽象工厂模式是针对多个产品等级结构。 抽象工厂设计到 产品簇概念。生活中的例子- 兵工厂的扩展兵工厂士兵战斗机扩展后的兵工厂兵工厂战斗机器士兵案例: 北大青鸟体系, 军人服务社。优势和缺陷:抽象工厂模式的主要优点是隔离了具体类的生成,使得客户不需要知道什么被创建了。 由于这样隔离,更换一个具体工厂就变的相对容易。所有的具体工厂都实现了抽象工厂中定义的那些公共接口,因此只需要改变具体工厂的实例, 所有的具体工厂都实现了抽象工厂中定义的那些公共接口。 从而可以实现高内聚,低偶合。应用情景:1. 系统需要屏蔽有关对象如何创建、如何组织如何表示。2. 系统需要由关联的多个对象来构成。3. 有关联的多个对象需要一起应用并且他们的约束是强迫的(不可分离)4. 你想提供一组对象而不显示他们的实现过程, 只显示他们的接口。补充单例模式1. 单例的目的是什么?保证一个类只有单一的实例,也就是说你无法通过New或CreateInstance来创建这个类的一个新实例。(并且唯一只有一个类的实例对象) 2. 单例的好处在哪里? 当一个对象在程序内部只能有一个实例的时候,它可以保证我们不会重复创建,而是始终指向同一个对象。3. 怎么用?桌面应用程序的时候使用MDI多文档窗体的时候 单例模式的实现代码如下: namespace SinglePattern public class SingleClass private static SingleClass instance; / 锁变量 private static object lockObject = new objest(); protected SingleClass() public static SingleClass GetInstance() lock (lockObject) if(instance = null) instance = new SingleClass(); return instance; 上面的代码,可以说是一个标准的单例的代码,但是上述代码在多线程的时候有可能会产生多个实例,为了避免这个情况的发生,我们需要限制同一时间,只能有一个线程访问。从上面的例子红色部分我们可以看到。典型应用场景: 在多窗体应用程序中,我们每次保证一个窗体只能出现一次的时候,需要使用单例模式限制。面向对象编程的特点:低偶合(不要对陌生人说话原
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年大兴安岭数学真题及答案
- 旧房改造场景中腻子粉与历史建筑风貌的兼容性难题
- 新能源车充电接口标准化对传统油机模块的逆向兼容挑战
- 2.5回归分析-2023-2024学年高中信息技术选修3(浙教版2019)人工智能初步-教学设计
- 新型纳米涂层技术对剪绒毯防污性能提升的产业化应用障碍
- 2025年中州水务考试题目及答案
- 外国留学考试题目及答案
- 数字化虚拟实验对传统化学操作能力培养的替代效应研究
- 快时尚消费模式下手绢生命周期碳足迹量化评估
- 微纳米复合涂层技术对凿岩钎具寿命延长的非线性影响机制
- 超声科易漏诊病例分析
- 股权无偿转让与公司资产重组协议
- DB51∕T 705-2023 四川主要造林树种苗木质量分级
- 护理交接班缺陷
- 逆向分析培训课件
- 双重预防机制运行情况评估报告
- 儿童近视防控课件
- 日间化疗相关管理制度
- 骨折的急救处理与操作
- 品牌推广策划方案(3篇)
- 诊疗器械器具和物品清洁消毒
评论
0/150
提交评论