标签:效果 result 相互 director 定义 ons .sh 对象创建 覆盖
建造者模式就是将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示。
适用范围:
建造者模式里面有四个角色:
具体实现代码如下:
public class Client
{
public void Test()
{
Director d = new Director();
IBuilder b1 = new ConcreteBuilder1();
IBuilder b2 = new ConcreteBuilder2();
d.Construct(b1);
Product p1 = b1.GetResult();
p1.ShowResult();
d.Construct(b2);
Product p2 = b2.GetResult();
p2.ShowResult();
}
}
public class Director
{
public void Construct(IBuilder builder)
{
builder.BuildPartA();
builder.BuildPartB();
}
}
public interface IBuilder
{
void BuildPartA();
void BuildPartB();
Product GetResult();
}
public class ConcreteBuilder1 : IBuilder
{
private Product product;
public ConcreteBuilder1()
{
this.product =new Product();
}
public void BuildPartA()
{
product.Add("PartA");
}
public void BuildPartB()
{
product.Add("PartB");
}
public Product GetResult()
{
return product;
}
}
public class ConcreteBuilder2 : IBuilder
{
private Product product;
public ConcreteBuilder2()
{
this.product = new Product();
}
public void BuildPartA()
{
product.Add("PartX");
}
public void BuildPartB()
{
product.Add("PartY");
}
public Product GetResult()
{
return product;
}
}
public class Product
{
List<string> lst = new List<string>();
public void Add(string part)
{
lst.Add(part);
}
public void ShowResult()
{
foreach (string part in lst)
{
Console.WriteLine(part);
}
}
}
实现要点:
1. 建造者模式主要用于“分步骤构建一个复杂的对象”,在这其中“分步骤”是一个稳定的算法,而复杂对象的各个部分则经常变化。
2. 产品不需要抽象类,特别是由于创建对象的算法复杂而导致使用此模式的情况下或此模式应用于产品的生成过程,其最终结果可能差异很大,不大可能提炼出一个抽象产品类。
3. 创建者中的创建子部件的接口方法不是抽象方法而是空方法,不进行任何操作,具体的创建者只需要覆盖需要的方法就可以。
4. 抽象工厂模式解决“系列对象”的需求变化,而Builder模式解决“对象部分”的需求变化,建造者模式常和组合模式(Compsite Pattern)结合使用。
效果
适用性:
以下情况应当使用建造者模式:
标签:效果 result 相互 director 定义 ons .sh 对象创建 覆盖
原文地址:http://www.cnblogs.com/mamxfx/p/7148109.html