当前位置:首页 > Windows程序 > 正文

设计模式C#实现(七)

2021-03-25 Windows程序

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

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对产品的构造过程可以精细控制(每个部件创建的先后顺序?还有什么?)

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/67315.html