您的位置:首页 > 产品设计 > UI/UE

设计模式之构建者(Builder)模式

2014-07-07 12:45 330 查看
意图:将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。 下面会发现模式实现方式与策略模式,桥接模式等都是相似的,唯有意图不同而已.此为创建者模式



创建者模式在平时生活中很常见,如肯德基的套餐,可乐可以跟很多东西组合成一个套餐.而你向服务员要的就是一个套餐,服务员就把不同东西组合在一起成了一个套餐,然后给你.
1.定义产品类
class Product {
List <string> parts = new List <string> ();
public void Add(string part) {
parts.Add(part);
}
public void Display() {
Console.WriteLine("\nProduct Parts -------");
foreach (string part in parts)
Console.Write(part);
Console.WriteLine();
}
}
2.定义创建接口与对象
interface IBuilder {
void BuildPartA();
void BuildPartB();
Product GetResult();
}
class Builder1 : IBuilder {
private Product product = new Product();
public  void BuildPartA() {
product.Add("PartA ");
}

public void BuildPartB() {
product.Add("PartB ");
}

public Product GetResult() {
return product;
}
}
class Builder2 : IBuilder {
private Product product = new Product();
public void BuildPartA() {
product.Add("PartX ");
}
public void BuildPartB() {
product.Add("PartY ");
}
public Product GetResult() {
return product;
}
}
3.开始组合创建
class Director {
// Builder uses a complex series of steps
public void Construct(IBuilder builder) {
builder.BuildPartA();
builder.BuildPartB();
builder.BuildPartB();
}
}
4.客户端调用
public static void Main() {
// Create one director and two builders
Director director = new Director();
IBuilder b1 = new Builder1();
IBuilder b2 = new Builder2();
// Construct two products
director.Construct(b1);
Product p1 = b1.GetResult();
p1.Display();

director.Construct(b2);
Product p2 = b2.GetResult();
p2.Display();
Console.ReadKey();
}
此模式也是抽象的结果,与其他一些模式实现方式差不多,唯一不同的是意图

原始链接:http://www.cnblogs.com/Clingingboy/archive/2010/08/26/1809558.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  构建者模式