软件开发技术-建造者模式PPT格式课件下载.ppt
《软件开发技术-建造者模式PPT格式课件下载.ppt》由会员分享,可在线阅读,更多相关《软件开发技术-建造者模式PPT格式课件下载.ppt(33页珍藏版)》请在冰豆网上搜索。
在建造过程完成后,提供产品的实例。
导演者角色(导演者角色(Director):
用来调用具体建造者以建造产品对象。
产品角色(产品角色(Product):
要建造的对象。
建造模式的结构建造者模式建造者模式简介建造者模式实例建造者模式其他情况建造者模式的应用总结建造者模式实例实例一生产产品实例二牛肉刀削面实例一建造者结构图ClientDirector+Construct()Builder+BuildPartA()+BuildPartB()+GetResult()ConcreteBuilder+BuildPartA()+BuildPartB()+GetResult()ProductbuildercreateBuilder类abstractclassBuilderpublicabstractvoidBuildPartA();
publicabstractvoidBuildPartB();
publicabstractProductGetResult();
Director类classDirectorpublicvoidConstruct(Builderbuilder)builder.BuildPartA();
builder.BuildPartB();
ConcreteBuilder类classConcreteBuilder:
BuilderprivateProductproduct=newProduct();
publicoverridevoidBuildPartA()product.Add(部件A);
publicoverridevoidBuildPartB()product.Add(部件B);
publicoverrideProductGetResult()returnproduct;
Product类classProductIListparts=newList();
publicvoidAdd(stringpart)parts.Add(part);
publicvoidShow()Console.WriteLine(n产品创建-);
foreach(stringpartinparts)Console.WriteLine(part);
Client程序staticvoidmain(stringargs)Directordirector=newDirector();
Builderb=newConcreteBuilder();
director.Construct(b);
Productp=b.GetResult();
p.Show();
Console.ReadLine();
实例二:
ClientSnackShop+CreateNoodle()NoodleBuilderBuildNoodle()BuildPureNoodle()BuildMeat()BuildVegetable()BuildSoup()GetNoodle()BeefCutBuilder+BuildNoodle()+BuildPureNoodle()+BuildMeat()+BuildVegetable()+BuildSoup()+GetNoodle()Noodlebuildercreate建造者结构图NoodleBuilder接口interfaceNoodleBuildervoidBuildNoodle();
voidBuildPureNoodle();
voidBuildMeat();
voidBuildVegetable();
voidBuildSoup();
NoodleGetNoodle();
SnackShop类classSnackShoppublicNoodleCreateNoodle(NoodleBuildernoodleBuilder)noodleBuilder.BuildNoodle();
noodleBuilder.BuildMeat();
noodleBuilder.BuildPureNoodle();
noodleBuilder.BuildSoup();
noodleBuilder.BuildVegetable();
Console.WriteLine(一碗香喷喷的牛肉刀削面加香菜做好啦!
n);
returnnoodleBuilder.GetNoodle();
BeefCutNoodle类classBeefCutNoodle:
NoodleBuilderprivateNoodlenoodle;
publicvoidBuildPureNoodle()noodle.pureNoodle=newCutPureNoodle();
Console.WriteLine(2.刀削面做好了n);
publicvoidBuildVegetable()noodle.vegetable=newCaraway();
Console.WriteLine(4.香菜洗好了n);
publicvoidBuildMeat()noodle.meat=newBeef();
Console.WriteLine(1.牛肉做好了n);
publicvoidBuildSoup()noodle.soup=newSoup();
Console.WriteLine(3.面汤做好了n);
publicvoidBuildNoodle()Console.WriteLine(开始做牛肉刀削面啦n);
noodle=newNoodle();
publicNoodleGetNoodle()returnnoodle;
Noodle类publicclassNoodlepublicPureNoodlepureNoodle;
publicVegetablevegetable;
publicSoupsoup;
publicMeatmeat;
publicNoodle()pureNoodle=newPureNoodle();
vegetable=newVegetable();
soup=newSoup();
meat=newMeat();
Client程序publicstaticvoidMain(stringargs)NoodleBuilderbcnwc=newBeefCutNoodle();
SnackShopsnackShop=newSnackShop();
Noodlenoodle=snackShop.CreateNoodle(bcnwc);
建造者模式建造者模式简介建造者模式实例建造者模式其他情况建造者模式的应用总结建造者模式其他情况多个产品类的情况省略抽象建造者者角色省略指导者角色合并建造者角色和产品角色如果有多个产品类的话,应当有多个具体建造者多个产品类的情况省略抽象建造者角色系统中只需要一个具体建造者,省略掉抽象建造者,结构图如下:
抽象建造者角色已经被省略掉,还可以省略掉指导者角色。
让Builder角色扮演指导者与建造者双重角色。
结构图如下:
省略指导者角色建造者模式失去抽象建造者角色和指导者角色后,可以进一步退化,从而失去具体建造者角色,此时具体建造者角色和产品角色合并,从而使得产品自己就是自己的建造者。
这样做混淆了对象的建造者和对象本身,但是有时候一个对象有着固定的几个零件,而且永远只有这几个零件,此时将产品类和建造类合并,可以使系统简单易读合并建造者角色和产品角色建造者模式建造者模式简介建造者模式实例建造者模式其他情况建造者模式的应用总结建造者模式的应用建造者模式的优点建造者模式的使用场景建造者模式的注意事项封装性使用建造者模式可以使客户端不必知道产品内部组成的细节。
独立,容易扩展具体建造者都是相互独立的,容易扩展。
建造者模式的优点相同的方法,不同的执行顺序,产生不同的事件结果时,可以采用建造者模式多个部件或零件,都可以装配到一个对象中,但是产生的运行结果又不相同时,可以采用建造者模式产品类非常复杂,或者产品类中的调用顺序不同产生了不同的效能,可以采用建造者模式建造者模式的使用场景建造者模式关注的是零件类型和装配工艺(顺序),这是它与工厂方法模式最大不同的地方,虽然同为创建类模式,但是注重点不同建造者模式的注意事项结论建造者模式主要用于“分步骤构建一个复杂的对象”,在这其中“分步骤”是一个稳定的算法,而复杂对象的各个部分则经常变化Builder模式解决“对象部分”的需求变化,建造者模式常和组合模式(CompositePattern)结合使用