建造者模式(Builder)

简介:
复制代码
  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<string> parts = new List<string>();
 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 }
复制代码

 


本文转自ZH奶酪博客园博客,原文链接:http://www.cnblogs.com/CheeseZH/archive/2012/05/14/2500717.html,如需转载请自行联系原作者

相关文章
|
2月前
|
设计模式 算法
设计模式--建造者模式 builder
这篇文章通过一个电脑购买的例子,详细解释了建造者模式的四个角色(产品类、抽象构建者、实体构建类和指导者类),并提供了相应的代码实现,阐述了建造者模式在设计复杂对象时的应用和优势。
设计模式--建造者模式 builder
|
设计模式 算法 Java
Java设计模式-建造者模式(Builder)
Java设计模式-建造者模式(Builder)
|
设计模式 算法 程序员
创建型模式 - 建造者模式(Builder Pattern)
创建型模式 - 建造者模式(Builder Pattern)
|
设计模式
创建型-Builder
Builder 模式,中文翻译为建造者模式或者构建者模式,也有人叫它生成器模式。 实际上,建造者模式的原理和代码实现非常简单,掌握起来并不难,难点在于应用场景。 直接使用构造函数或者配合 set 方法就能创建对象,为什么还需要建造者模式来创建呢?
190 0
|
设计模式 算法 Java
浅谈JAVA设计模式之——建造者模式(Builder)
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
155 0
浅谈JAVA设计模式之——建造者模式(Builder)
|
Java 设计模式