- 1、本文档共78页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第六章 面向对象的软件设计模式
第六章 面向对象的软件设计模式 面向对象的软件设计模式 创建型设计模式——就是用来创建对象的模式。 结构型设计模式——讨论类和对象的结构。采用继承机制来组合接口或通过组合一些对象,以实现新的功能。 行为型设计模式——描述算法对象间职责的分配。行为型设计模式不仅描述对象或类的模式,还描述它们之间的通信模式。 6.1 创建型设计模式 创建型设计模式——就是用来对象创建的模式。 创建型模式的目标是简化对象的创建和方便对象的管理。 6.1.1 工厂模式(Factory method) 工厂模式的由来 工厂模式的结构 工厂模式的参与者 应用举例 适用性及效果分析 6.1.1.1 工厂模式的由来(1/2) 在面向对象编程中, 很普遍的方法是用一个new操作符产生一个对象实例, new操作符就是用来构造对象实例的。但是在一些情况下, new操作符直接生成对象会带来一些问题。 首先,要使用new运算符创建一个对象我们必须清楚所要创建的对象的类信息,而有时候这并不现实,譬如打开一个视频文件需要一个播放器对象,但是用户可能不知道具体播放器叫什么名字,而只需要系统分派给这个视频文件一个合适的播放器就可以了,这种情况下用new运算符是不适宜的。 6.1.1.1 工厂模式的由来(2/2) 其次,许多类型对象的创造需要一系列的步骤:可能需要计算或取得对象的初始设置;选择生成哪个子对象实例;或在生成需要的对象之前必须先生成一些辅助功能的对象等。在这些情况下,新对象的建立就是一个过程,而不是一个简单的操作。 为了方便地完成这些复杂的对象创建工作,这就引入了工厂模式。 工厂模式又称虚拟构造机(Virtual Constructor)。它定义一个用于创建对象的接口,让子类决定实例化哪一个类,即将类的实例化延迟到子类。 工厂模式包括Factory、Concrete Factory、Product 和ConcreteProduct 四个部分。 6.1.1.2 工厂模式的结构 6.1.1.3 工厂模式的参与者 Product:产品角色,定义工厂方法所创建的对象的接口。 ConcreteProduct:具体的产品角色,实现Product接口。 Factory:“抽象的工厂”角色,声明工厂方法,该方法返回一个Product类型的对象。Factory也可以定义一个工厂方法的默认实现,它返回一个默认的ConcreteProduct对象。可以调用工厂方法以创建一个Product对象。 ConcreteFactory:具体的工厂角色,创建具体产品的子工厂,重写工厂方法以返回一个ConcreteProduct实例。 6.1.1.4 应用举例 假设快餐店KFC要给顾客提供一系列的食品,如鸡腿、鸡翅等,顾客每要求一种食品,KFC应该可以很快“生产”出来,如何使用面向对象的方法,并采用工厂模式实现这个过程? 代码如下: //抽象的KFC食品,Product角色 public abstract class KFCFood { public abstract void show(); } //下面两个类表示两种具体的KFC食品,它们继承了抽象的KFC食品 //Concrete Product1角色 public class Chicken: KFCFood { public override void show() { Console.WriteLine(“鸡腿+1”); } } //Concrete Product2角色 public class Wings: KFCFood { public override void show() { Console.WriteLine(“鸡翅+1”); } } //产品工厂,Factory角色 interface IKFCFactory { KFCFood CreatFood(); } //鸡翅膀工厂,ConcreteFactory角色 public class WingsFactory: IKFCFactory { public KFCFood CreateFood() { return new Wings(); } } //鸡腿工厂,ConcreteFactory角色 public class ChickenFactory: IKFCFactory { public KFCFood CreateFood() { return new Chicken(); } } Static void
您可能关注的文档
- 第五课第一节 企业的经营和发展.ppt
- 第八章 系统的绩效考核技术——目标管理和标杆超越.ppt
- 第八章 药品产品策略4.ppt
- 第八章 20世纪0—30年代地流行风格.ppt
- 第八章 农业区位和农业地域类型课件.ppt
- 第八章 个人所得税4.ppt
- 第八章 公关危机管理4.ppt
- 第八章 商业银资产负债管理.ppt
- 第八章 回转件地平衡.ppt
- 第八章 技术进步和经济发展(发展经济学-马春文、张东辉编著 )..ppt
- 2023年江苏省镇江市润州区中考生物二模试卷+答案解析.pdf
- 2023年江苏省徐州市邳州市运河中学中考生物二模试卷+答案解析.pdf
- 2023年江苏省苏州市吴中区中考冲刺数学模拟预测卷+答案解析.pdf
- 2023年江苏省南通市崇川区田家炳中学中考数学四模试卷+答案解析.pdf
- 2023年江西省吉安市中考物理模拟试卷(一)+答案解析.pdf
- 2023年江苏省泰州市海陵区九年级(下)中考三模数学试卷+答案解析.pdf
- 2023年江苏省苏州市高新二中中考数学二模试卷+答案解析.pdf
- 2023年江苏省南通市九年级数学中考复习模拟卷+答案解析.pdf
- 2023年江苏省南通市海安市九年级数学模拟卷+答案解析.pdf
- 2023年江苏省泰州市靖江外国语学校中考数学一调试卷+答案解析.pdf
最近下载
- 二年级家长会班主任发言稿 VIP
- 2023-2024学年上海市位育中学八年级上学期期中考试英语试卷含详解.docx VIP
- 【自做】白雪公主PPT正常版.ppt
- 名著阅读《群英会蒋干中计》课件精品课件(选自罗贯中《三国演义》;34页).pptx VIP
- 2023-2024学年北京某中学八年级上学期期中考试英语试卷(含详解).pdf VIP
- 手术患者意外伤害预防.pptx
- 2024年初中信息技术学业水平合格性考试题库含答案.pdf
- 2024-2025学年小学科学一年级上册(2024)教科版(2024)教学设计合集.docx
- 2024全国中考语文试题分类汇编:记叙文阅读.pdf VIP
- 英语国家概况100问及答案.doc
文档评论(0)