設計模式c#語言描述——建造者(builder)模式
*本文參考了《JAVA與模式》的部分內容,適合于設計模式的初學者。
建造模式是對象的創建模式。建造模式可以將一個產品的內部表象與產品的生成過程分割開來,從而可以使一個建造過程生成具有不同的內部表象的產品對象。
一個產品常有不同的組成成分作為產品的零件,它們通常叫做產品的內部表象。不同的產品可以有不同的內部表象,也就是不同的零件。使用建造模式可以使客戶不需要知道所生成的產品的對象有哪些零件,每個產品的對應零件彼此有何不同,是怎么建造出來的,以及怎樣組成產品。下面是一個示例性的實現。
在這個示例性的系統中,最終產品Product只有兩個零件,即Part1和Part2.相應的建造方法也有兩個:builderPart1和builderPart2.可以看出本模式涉及到四個角色:
抽象建造者(Builder):給出一個抽象接口,以規范產品對象的各個組成部分的建造。
具體建造者(Concrete Builder):擔任這個角色的是與應用程序緊密相關的一些類,它們在應用程序的調用下創建產品的實例。
導演者(Director):是與客戶端打交道的角色,將創建產品的請求劃分為對各個零件的建造請求,再將這些請求委派給具體建造者。
產品(Product):建造中的對象。
Builder:
public interface Builder
{
void buildPart1();
void buildPart2();
Product retrieveResult();
}// END INTERFACE DEFINITION Builder
ConcreteBuilder:
public class ConcreteBuilder : Builder
{
private Product product;
public void buildPart1()
{
//build the first part of the product
}
public void buildPart2()
{
//build the second part of the product
}
public Product retrieveResult()
{
return product;
}
}// END CLASS DEFINITION ConcreteBuilder
Director:
public class Director
{
private Builder builder;
public void Director()
{
}
public void construct()//產品構造方法,負責調用各個零件建造方法
{
builder=new ConcreteBuilder();
builder.builderPart1();
builder.builderPart2();
builder.retrieveResult();
}
}// END CLASS DEFINITION Director
Product:
public interface Product
{
}// END INTERFACE DEFINITION Product
上面的系統中只有一個產品類,對應地也有一個具體建造者類。有多個產品及建造者類的建造模式如下圖:
|