手机版

网建造者模式讲解

时间:2021-09-14 来源:互联网 编辑:宝哥软件园 浏览:

建造者模式的定义:

将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式

建造者模式结构图:

建造者模式角色:

一个构建器:为创建一个产品对象的各个部件指定抽象接口2混凝土施工员:实现建设者的接口以构造和装配该产品的各个部件,定义并明确它所创建的表示,并提供一个检索产品的接口3董事:构造一个使用建设者接口的对象四产品:表示被构造的复杂对象混凝土建筑商。创建该产品的内部表示并定义它的装配过程,包含定义组成部件的类,包括将这些部件装配成最终产品的接口。

下面通过过现实生活中的建房子的例子,来诠释建造者模式:

1.抽象出建造者接口,里面有待实现的创建房子种类的条件,创建后返回房间的数量,以及这件房子的描述信息。

///摘要///抽象建造者////摘要公共接口ihhouse {///摘要///创建房子种类的条件////summary////returns/returns boolget后院();///摘要///创建的房间数////summary///returns/returns long noo froms();///摘要///描述////summary///returns/returns string Description();}2.继承我的房子接口,具体建造者,这里创建了一件房间,里面包括客厅,厨房,洗手间,卧室,共四件房间这样一座房子。

公共类CRoom { public string room name { get;设置;} } ///摘要///具体建造者////摘要公共类csfh : I house { private bool mblnbakyard;私人散列表室;公共CSFH(){ CRoom room=new CRoom();房间“房间名=”一楼客厅;rooms=new Hashtable();房间。添加(' room1 ',房间);room=new CRoom();房间“房间名=”一楼厨房;房间。添加(' room2 ',房间);room=new CRoom();房间“房间名=”一楼洗手间;房间。添加(' room3 ',房间);room=new CRoom();房间“房间名=”一楼卧室;房间。添加(' room4 ',房间);mblnBackyard=true }公共bool后院(){返回mblnBackyard}公共长noofroms(){返回房间.计数;}公共字符串描述(){ IDictionaryEnumerator my moner=Rooms .GetEnumerator();字符串' strDescription='这个房子共房间。伯爵间\ n ';而(我的分子移动下一个()){ strDescription=strDescription ' \ n ' my monier .键我的MENUER .值)。房间名称}返回strDescription} }3。继承我的房子接口,具体建造者,这里创建了一件房子,里面只包括卧室,客厅,厨房共三件房间这样一座房子。

///摘要///其他具体建造者////摘要公共类: I号船长住宅{私人bool mblnBackyard私人散列表室;public CApt(){ Rooms=new Hashtable();CRoom room=new CRoom();房间“房间名=”卧室;房间。添加(' room1 ',房间);room=new CRoom();房间“房间名=”客厅;房间。添加(' room2 ',房间);room=new CRoom();房间“房间名=”厨房;房间。添加(' room3 ',房间);mblnBackyard=false}公共bool后院(){返回mblnBackyard}公共长noofroms(){返回房间.计数;}公共字符串描述(){ IDictionaryEnumerator my moner=Rooms .GetEnumerator();字符串' strDescription='这个房子一共房间。伯爵间\ n ';而(我的分子移动下一个()){ strDescription=strDescription ' \ n ' my monier .键我的MENUER .值)。房间名称}返回strDescription} }4。创建指导者,指导要求哪一个建造者去建造什么样子的房间。

///摘要///指导者////摘要公共类CDirector { public ihhouse build house(bool blnBackyard){ if(blnBackyard){ return new CSFH();} else { return new CapT();} } }5.创建:

静态void Main(字符串[]args){ CDirector objDirector=new CDirector();//实例化教师IHouse objHouse字符串输入=控制台。ReadLine();//输入引导创建者创建房间的条件obj house=objdirector . build house(bool . parse(输入));控制台。WriteLine(objHouse。description());控制台。ReadLine();} builder模式主要用于“一步一步构建复杂对象”,其中“一步一步”是一种稳定的算法,复杂对象的各个部分经常会发生变化

产品不需要抽象类,尤其是使用这种模式的时候,由于创建对象的算法比较复杂,或者将这种模式应用到产品的生成过程中,最终的结果可能会有很大的不同,不可能提取出抽象的产品类。

前者抽象工厂解决“系列对象”的需求变化,而Builder模式解决“对象零件”的需求变化。

builder模式的使用使得产品的内部外观独立变化。使用构建器模式可以使客户端不需要知道产品内部组成的细节

每个建设者相对独立,与其他建设者无关。

构建器模式适用于要生成的产品对象属性的相互依赖,构建器模式可以强制生成顺序。要生成的产品对象具有复杂的内部结构。

以上就是本文的全部内容。希望对大家的学习有帮助,支持我们。

版权声明:网建造者模式讲解是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。