1 / 20
文档名称:

设计模式教学课件7(与“建造”有关文档共20张).pptx

格式:pptx   大小:96KB   页数:20页
下载后只包含 1 个 PPTX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

设计模式教学课件7(与“建造”有关文档共20张).pptx

上传人:胜利的果实 2022/11/22 文件大小:96 KB

下载得到文件列表

设计模式教学课件7(与“建造”有关文档共20张).pptx

相关文档

文档介绍

文档介绍:该【设计模式教学课件7(与“建造”有关文档共20张) 】是由【胜利的果实】上传分享,文档一共【20】页,该文档可以免费在线阅读,需要了解更多关于【设计模式教学课件7(与“建造”有关文档共20张) 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。仔细阅读体会“建造小人”例子
建造“小人”的过程是稳定的,都需要头身手脚。
具体建造的细节不同,有胖瘦高矮等区别。
第1页,共20页。
抽象的建造人的类
abstractclassPersonBuilder
{
protectedGraphicsg;
protectedPenp;
publicPersonBuilder(Graphicsg,Penp)
{
=g;
=p;
}
publicabstractvoidBuildHead();
publicabstractvoidBuildBody();
publicabstractvoidBuildArmLeft();
publicabstractvoidBuildArmRight();
publicabstractvoidBuildLegLeft();
publicabstractvoidBuildLegRight();
}
第2页,共20页。
classPersonThinBuilder:PersonBuilder
{
publicPersonThinBuilder(Graphicsg,Penp)
:base(g,p)
{}
publicoverridevoidBuildHead()
{
(p,50,20,30,30);
}
publicoverridevoidBuildBody()
{
(p,60,50,10,50);
}
建造一个瘦的小人
第3页,共20页。
publicoverridevoidBuildArmLeft()
{
(p,60,50,40,100);
}
publicoverridevoidBuildArmRight()
{
(p,70,50,90,100);
}
publicoverridevoidBuildLegLeft()
{
(p,60,100,45,150);
}
publicoverridevoidBuildLegRight()
{
(p,70,100,85,150);
}
}
第4页,共20页。
指导者角色将客户端创建产品的请求划分为对各个零件的建造请求,再将这些请求委派给具体建造者角色。
建造一个胖的小人(略)
g.
BuildHead();
这时候,此对象相当于一个有待建造的产品,而对象的这些性质相当于产品的零件,建造产品的过程就是组合零件的过程。
客户端负责创建指导者和具体建造者对象。
publicPersonThinBuilder(Graphicsg,Penp)
this.
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示
使用建造者模式可以使客户端不必知道产品内部组成的细节。
DrawEllipse(p,50,20,30,30);
在对象创建过程中会使用到系统中的一些其它对象,这些对象在产品对象的创建过程中不易得到。
建造一个胖的小人(略)
classPersonFatBuilder:PersonBuilder
{
。。。。。。
}
第5页,共20页。
指挥者角色(控制建造过程,隔离用户与建造过程的关联)
classPersonDirector
{
privatePersonBuilderpb;
publicPersonDirector(PersonBuilderpb)
{
=pb;
}
publicvoidCreatePerson()
{
();
();
();
();
();
();
}
}
第6页,共20页。
客户端
Penp=newPen();
PersonThinBuilderptb=new
PersonThinBuilder((),p);
PersonDirectorpdThin=newPersonDirector(ptb);
();
PersonFatBuilderpfb=new
PersonFatBuilder((),p);
PersonDirectorpdFat=newPersonDirector(pfb);
();
第7页,共20页。
privatePersonBuilderpb;
实现Builder角色提供的接口,一步一步完成创建产品实例的过程。
这时候,此对象相当于一个有待建造的产品,而对象的这些性质相当于产品的零件,建造产品的过程就是组合零件的过程。
不管是输出文本文件,还是输出XML文件,步骤基本一致
pb.
PersonFatBuilder(pictureBox2.
publicoverridevoidBuildLegLeft()
不管是输出文本文件,还是输出XML文件,步骤基本一致
g.
这时候,此对象相当于一个有待建造的产品,而对象的这些性质相当于产品的零件,建造产品的过程就是组合零件的过程。
abstractclassPersonBuilder
pdFat.
DrawLine(p,60,50,40,100);
在某个性质没有赋值之前,另一个性质则无法赋值。

pb.
建造者(Builder)模式
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示
第8页,共20页。
对象性质的建造
有些情况下,一个对象会有一些重要的性质,在它们没有恰当的值之前,对象不能作为一个完整的产品使用。比如,一个电子邮件有发件人地址、收件人地址、主题、内容、附录等部分,而在最起码的收件人地址未被赋值之前,这个电子邮件不能发出。
第9页,共20页。
对象性质的建造
有些情况下,一个对象的一些性质必须按照某个顺序赋值才有意义。在某个性质没有赋值之前,另一个性质则无法赋值。这些情况使得性质本身的建造涉及到复杂的商业逻辑。
这时候,此对象相当于一个有待建造的产品,而对象的这些性质相当于产品的零件,建造产品的过程就是组合零件的过程。由于组合零件的过程很复杂,因此,这些"零件"的组合过程往往被"外部化"到一个称作建造者的对象里,建造者返还给客户端的是一个全部零件都建造完毕的产品对象。
第10页,共20页。