C#中的Builder模式
设计模式中的Builder模式,又叫建造者模式,是一种常用的模式,它主要的作用是分离一个复杂对象的构建过程和复杂对象的表现形式,抽象出构建过程,这样可以使用相同的构建过程,配合依赖注入构建出不用的产品。
UML
其中有两点需要注意。
- Director和Builder之间是聚合关系而不是合成关系,暗示Director不需要对Builder的生命周期负责,Builder在外部创造并通过依赖注入的方式进入Director。
- 客户代码使用的时候可以通过Directory间接操作Builder,完成复杂对象的构造,不用直接调用Builder的各个方法。通过这样我们确保Directory统一了复杂对象的创造逻辑。
一个例子
考虑一下一个例子,我们创造一个房子,当然,房子有很多种,有别墅,平房,楼房等,但是抽象的看来,每个房子都需要一下几个步骤
- CreateWall
- CreateRoom
- CreateWindow
- CreateDoor
而一个房子大概也需要如下属性
- Wall
- Room
- Window
- Door
这样,我们试着来抽象出房子(在这里是我们的Product)和建造者接口。
public class House
{
public string Type {
get; set; }
public House(string type)
{
Type = type;
}
}
很简单的一个类,仅仅一个属性,接着是创建者接口。
interface IHouseBuilder
{
void CreateWall();
void CreateRoom();
void CreateWindow(<