建造者模式PPT学习教案_第1页
建造者模式PPT学习教案_第2页
建造者模式PPT学习教案_第3页
建造者模式PPT学习教案_第4页
建造者模式PPT学习教案_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、会计学1建造者模式建造者模式w 建造者模式概述w 建造者模式的结构与实现w 建造者模式的应用实例w 指挥者类的深入讨论w 建造者模式的优缺点与适用环境第1页/共30页复杂对象(汽车)示意图复杂对象(汽车)示意图第2页/共30页建造者模式可以将部件本身和它们的组装过程分开,关建造者模式可以将部件本身和它们的组装过程分开,关注如何一步步创建一个包含多个组成部分的复杂对象,注如何一步步创建一个包含多个组成部分的复杂对象,用户只需要指定复杂对象的类型即可得到该对象,而无用户只需要指定复杂对象的类型即可得到该对象,而无须知道其内部的具体构造细节。须知道其内部的具体构造细节。第3页/共30页建造者模式:建

2、造者模式:将一个复杂对象的构建与它的表示分离复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。Builder Pattern: Separate the construction of a complex object from its representation so that the same construction process can create different representations.第4页/共30页第5页/共30页builderDirector- builder : Builder+ Construct ().builder.BuildPart

3、A();builder.BuildPartB();builder.BuildPartC();return builder.GetResult();Builder+BuildPartA ()BuildPartB ()BuildPartC ()GetResult ().ConcreteBuilder+BuildPartA ()BuildPartB ()BuildPartC ()GetResult ().Product-PartAPartBPartC: : : 第6页/共30页第7页/共30页class Productprivate string partA; /定义部件,部件可以是任意类型,包括值

4、类型和引用类型定义部件,部件可以是任意类型,包括值类型和引用类型private string partB;private string partC;public string PartA get return partA; set partA = value; public string PartB get return partB; set partB = value; public string PartC get return partC; set partC = value; 第8页/共30页abstract class Builder /创建产品对象 protected Produc

5、t product = new Product(); public abstract void BuildPartA(); public abstract void BuildPartB(); public abstract void BuildPartC(); /返回产品对象 public Product GetResult() return product; 第9页/共30页class ConcreteBuilder1 : Builder public override void BuildPartA() product.PartA = A1; public override void B

6、uildPartB() product.PartB = B1; public override void BuildPartC() product.PartC = C1; 第10页/共30页class Director private Builder builder; public Director(Builder builder) this.builder = builder; public void SetBuilder(Builder builder) this.builder = builder; /产品构建与组装方法产品构建与组装方法 public Product Construct

7、() builder.BuildPartA(); builder.BuildPartB(); builder.BuildPartC(); return builder.GetResult(); 第11页/共30页Builder builder = new ConcreteBuilder1(); /可通过配置文件实现可通过配置文件实现Director director = new Director(builder);Product product = director.Construct();第12页/共30页第13页/共30页第14页/共30页第15页/共30页第16页/共30页第17页/共3

8、0页第18页/共30页第19页/共30页第20页/共30页此处也可以将返回的结果Cup再返回出去,由用户来Show第21页/共30页第22页/共30页第23页/共30页这种变化,导致系统变得很庞大,增加了系统的理解难度和运行成本第24页/共30页第25页/共30页某游戏软件公司决定开发一款基于角色扮演的多人在线网络游戏,玩家可以在游戏中扮演虚拟世界中的一个特定角色,角色根据不同的游戏情节和统计数据(例如力量、魔法、技能等)具有不同的能力,角色也会随着不断升级而拥有更加强大的能力。作为该游戏的一个重要组成部分,需要对游戏角色进行设计,而且随着该游戏的升级将不断增加新的角色。通过分析发现,游戏角色

9、是一个复杂对象,它包含性别、面容等多个组成部分,不同类型的游戏角色,其性别、面容、服装、发型等外部特性都有所差异,例如“天使”拥有美丽的面容和披肩的长发,并身穿一袭白裙;而“恶魔”极其丑陋,留着光头并穿一件刺眼的黑衣。无论是何种造型的游戏角色,它的创建步骤都大同小异,都需要逐步创建其组成部分,再将各组成部分装配成一个完整的游戏角色。现使用建造者模式来实现游戏角色的创建。第26页/共30页游戏角色创建结构图游戏角色创建结构图ActorController+ Construct (ActorBuilder ab).: ActorActorBuilderabstract # actor : Acto

10、r = new Actor()+BuildType ()BuildSex ()BuildFace ()BuildCostume ()BuildHairstyle ()CreateActor (): void: void: void: void: void: ActorHeroBuilder+BuildType ()BuildSex ()BuildFace ()BuildCostume ()BuildHairstyle ().: void: void: void: void: voidActor-+typesexfacecostumehairstyleTypeSexFaceCostumeHair

11、style: string: string: string: string: string: string: string: string: string: string+set_Type (string value)get_Type ()set_Sex (string value)get_Sex ()set_Face (string value)get_Face ()set_Costume (string value)get_Costume ()set_Hairstyle (string value)get_Hairstyle ().: void: string: void: string: void: string: void: string: void: stringDevilBuilder+BuildType ()BuildSex ()BuildFace ()BuildCostume ()BuildHa

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论