码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式--建造者模式

时间:2017-04-18 14:21:47      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:public   不同的   class   each   调用   result   struct   turn   over   

 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时适用

 

//定义一个产品类

class Product
{

//组成部分的集合
IList<string> parts = new List<string>();

public void Add(string part)
{
parts.Add(part);
}

public void Show()
{
Console.WriteLine("\n产品创建------");
foreach (string part in parts)
{
Console.WriteLine(part);
}
}

}

 

//抽象一个建造者

abstract class Builder
{
public abstract void BuildPartA();
public abstract void BuildPartB();
public abstract Product GetResult();
}

//建造者具体实现类

class ConcreteBuilder1 : Builder
{
Product product = new Product();
public override void BuildPartA()
{
product.Add("部件A");
}

public override void BuildPartB()
{
product.Add("部件B");
}

public override Product GetResult()
{
return product;
}
}

class ConcreteBuilder2 : Builder
{
Product product = new Product();
public override void BuildPartA()
{
product.Add("部件X");
}

public override void BuildPartB()
{
product.Add("部件Y");
}

public override Product GetResult()
{
return product;
}
}

//创建一个指挥者,负责完成部分的建造。

class Director
{
public void Construct(Builder builder)
{
builder.BuildPartA();
builder.BuildPartB();
}
}

调用:

//实例化一个指挥者

Director director = new Director();

//创建建造实例
ConcreteBuilder1 b1 = new ConcreteBuilder1();

//传入指挥者,进行部分的建造
director.Construct(b1);

//将建造的部分显示
b1.GetResult().Show();

ConcreteBuilder2 b2 = new ConcreteBuilder2();
director.Construct(b2);
b2.GetResult().Show();

 

设计模式--建造者模式

标签:public   不同的   class   each   调用   result   struct   turn   over   

原文地址:http://www.cnblogs.com/buzhidaojiaoshenme/p/6727232.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!