建造者模式,就是使得建造代码与表示代码分离,由于建造者隐藏了该产品是如何组装的,所以如果需要改变一个产品的内部表示,只需要再定义一个具体的建造者就可以了。具体的UML图例如下:

当然,上面的已经做了详细的注释,其实,对于产品,主要是先将所有的产品的公共行为抽象为一个方法出来,然后再在Builder中进行具体的构建行为,当然了,产品是怎么样的,还得需要Director的决定。具体代码如下:

Product类

using System;

using System.Collections.Generic;



namespace BuilderApplication

{

class Product

{

List
<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);

}

}

}

}

Builder类:

 

namespace BuilderApplication

{

abstract class Builder

{

public abstract void BuildPartA();

public abstract void BuildPartB();

public abstract Product GetResult();

}

}

ConcreteBuilder1类:

 

namespace BuilderApplication

{

class ConcreteBuilder1:Builder

{

private Product product = new Product();



public override void BuildPartA()

{

product.Add(
"部件A");

}



public override void BuildPartB()

{

product.Add(
"部件B");

}



public override Product GetResult()

{

return product;

}

}

}

 

ConcreteBuilder2类:

 

namespace BuilderApplication

{

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;

}

}

}

 

最后就是指挥官来进行创建产品了:

Director类:

 

namespace BuilderApplication

{

class Director

{

public void Construct(Builder builder)

{

builder.BuildPartA();

builder.BuildPartB();

}

}

}
posted on 2011-05-29 15:28  程序诗人  阅读(300)  评论(0编辑  收藏  举报