博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
建造者模式(Builder)
阅读量:4347 次
发布时间:2019-06-07

本文共 2825 字,大约阅读时间需要 9 分钟。

1 /*  2  * 建造者模式是一种创建型模式,它主要是应对项目中一些复杂对象的创建工作。  3  * 所谓“复杂对象”,是指此对象中还含有其它的子对象。  4  * 我们现在定义一个场景:汽车生产必须包含车轮(Wheel)、油箱(OilBox)和车身(Body),  5  * 应用建造者模式,用C#控制台应用程序实现该设计,构建BMW品牌和BenZ品牌汽车生产。  6  */  7 using System;  8 using System.Collections.Generic;  9 using System.Linq; 10 using System.Text; 11  12 namespace Builder 13 { 14     class Car 15     { 16         IList
parts = new List
(); 17 public void Add(string part) 18 { 19 parts.Add(part); 20 } 21 public void Show() 22 { 23 Console.WriteLine("\n创建产品\nBegin"); 24 foreach (string part in parts) 25 { 26 Console.WriteLine("创建:"+part); 27 } 28 Console.WriteLine("End"); 29 } 30 } 31 abstract class Builder 32 { 33 public abstract void BuildWheel(); 34 public abstract void BuildOilBox(); 35 public abstract void BuildBody(); 36 public abstract Car GetProduct(); 37 } 38 class BMWBuilder : Builder 39 { 40 private Car car = new Car(); 41 public override void BuildWheel() 42 { 43 car.Add("BMW-Wheel"); 44 } 45 public override void BuildOilBox() 46 { 47 car.Add("BMW-OilBox"); 48 } 49 public override void BuildBody() 50 { 51 car.Add("BMW-Body"); 52 } 53 public override Car GetProduct() 54 { 55 return car; 56 } 57 58 } 59 class BenZBuilder : Builder 60 { 61 private Car car = new Car(); 62 public override void BuildWheel() 63 { 64 car.Add("BenZ-Wheel"); 65 } 66 public override void BuildOilBox() 67 { 68 car.Add("BenZ-OilBox"); 69 } 70 public override void BuildBody() 71 { 72 car.Add("BenZ-Body"); 73 } 74 public override Car GetProduct() 75 { 76 return car; 77 } 78 79 } 80 class Director 81 { 82 public void Construct(Builder bd) 83 { 84 bd.BuildWheel(); 85 bd.BuildOilBox(); 86 bd.BuildBody(); 87 } 88 } 89 class Program 90 { 91 static void Main(string[] args) 92 { 93 Director dt = new Director(); 94 Builder bmw = new BMWBuilder(); 95 Builder benz = new BenZBuilder(); 96 97 dt.Construct(bmw); 98 Car car1 = bmw.GetProduct(); 99 car1.Show();100 101 dt.Construct(benz);102 Car car2 = benz.GetProduct();103 car2.Show();104 }105 }106 }

 

转载于:https://www.cnblogs.com/CheeseZH/archive/2012/05/14/2500717.html

你可能感兴趣的文章
CVE-2010-2883Adobe Reader和Acrobat CoolType.dll栈缓冲区溢出漏洞分析
查看>>
使用正确的姿势跨域
查看>>
AccountManager教程
查看>>
Android学习笔记(十一)——从意图返回结果
查看>>
算法导论笔记(四)算法分析常用符号
查看>>
ultraedit激活
查看>>
总结(6)--- python基础知识点小结(细全)
查看>>
亿级曝光品牌视频的幕后设定
查看>>
Detours信息泄漏漏洞
查看>>
raid5什么意思?怎样做raid5?raid5 几块硬盘?
查看>>
(简单)华为Nova青春 WAS-AL00的USB调试模式在哪里开启的流程
查看>>
图论知识,博客
查看>>
[原创]一篇无关技术的小日记(仅作暂存)
查看>>
20145303刘俊谦 Exp7 网络欺诈技术防范
查看>>
原生和jQuery的ajax用法
查看>>
iOS开发播放文本
查看>>
20145202马超《java》实验5
查看>>
JQuery 事件
查看>>
main(argc,argv[])
查看>>
第四阶段 15_Linux tomcat安装与配置
查看>>