您的位置:首页 > 编程语言 > C#

设计模式C#实现(七)——生成器模式

2015-09-17 10:46 176 查看
生成器模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

UML类图:



构成:

1.Builder(接口/抽象类)定义了创建一个产品Product的各个部件的方法,返回创建好的产品。

2.Director 调用Builder创建部件的方法,对产品的创建进行控制

3.ConcreteBuilder 实现/重写 Builder的方法,负责创建Product各个部件

4.Product 被创建的对象

以手机为例,在这里Builder使用抽象类提供了,提供了空的方法作为默认的部件创建方法和创建、返回产品两个方法,也可以定义为接口让具体类去实现

abstract class Builder
{
public Phone phone { get; private set; }
virtual public void createPhone() { phone = new Phone(); }
virtual public void addCPU() { }
virtual public void addMemory() { }
virtual public void addScreen() { }
virtual public Phone getPhone()
{
return phone;
}
}


一个生成苹果手机的ConcreteBuilder

class AppleBuilder : Builder
{

override public void addCPU()
{
phone.CPU = "A7";
}
override public void addMemory()
{
phone.Memory = "1GB";
}
override public void addScreen()
{
phone.Screen = "LG 5.5\"";
}

}


Director负责调用Builder

class Director
{
public void createPhone(Builder builder)
{
builder.createPhone();
builder.addCPU();
builder.addMemory();
builder.addScreen();
}
}


要生成的产品Phone

class Phone
{
public string CPU;
public string Memory;
public string Screen;
public override string ToString()
{
return "CPU:"+CPU+"\nMemory:"+Memory+"\nScreen:"+Screen;
}
}


执行代码



效果:

1.变更产品,只需定义一个新的ConcreteBuilder

2.Director对产品的构造过程可以精细控制(每个部件创建的先后顺序?还有什么?)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: