設計模式之建造模式
來源:程序員人生 發布時間:2015-04-15 09:07:21 閱讀次數:2413次
建造模式是對象的創建模式,建造模式可以將1個產品的內部表象和產品的生產進程分割開來,從而是1個建造進程生成具有不同的內部表象的產品
對象。
建造模式的結構以下類圖所示:

在這個系統中,終究產品Product只有兩個零件,即part1和part2,相應的建造方法也有兩個:buildPart1()和buildPart2(),同時呢本模式觸及到4個角色,分別為:
*抽象建造者(Builder)角色:給出1個抽象接口,以規范產品對象的各個組成部份的建造,1般而言,此接口獨立于利用程序的商業邏輯。
*具體建造者(Concrete Builder)角色:擔負這個角色的是與利用程序緊密相干的1些類,它們在利用程序調用下創建產品的實例。
*導演者(Director)角色:擔負這個角色的類調用具體建造者角色以創建產品對象,應當指出的是,導演者角色并沒有產品類的具體知識。
真正具有產品類的具體知識是具體建造者角色。
*產品(Product)角色:產品(Product)便是建造中的復雜對象,1般來講,1個系統中會有多于1個的產品類,而且這些產品類其實不1定有共同
的接口,而完全可以是不相干聯的。
以下給出這個系統比較簡單的示意性源碼:
Director:
package builder;
public class Director {
private Builder builder;
/**
* 產品構造方法,負責調用各個零件建造方法
*/
public void construct(){
builder=new ConcreteBuilder();
builder.buildPart1();
builder.buildPart2();
builder.retrieveResult();
//continue with other code
}
}
Builder:
package builder;
public abstract class Builder {
/**
* 產品的零件建造方法
*/
public abstract void buildPart1();
/**
* 產品零件建造方法
*/
public abstract void buildPart2();
/**
* 產品返還方法
*/
public abstract Product retrieveResult();
}
ConcreteBuilder:
package builder;
public class ConcreteBuilder extends Builder {
private Product product=new Product();
/**
* 產品零件建造方法
*/
public void buildPart1() {
//build the first part of the part
}
/**
* 產品零件建造方法
*/
public void buildPart2() {
//build the second part of the product
}
/**
* 產品返還方法
*/
public Product retrieveResult() {
return product;
}
}
Product:
package builder;
public class Product {
//Anything pertaining to this product
}
這些源碼中,有許多的方法并沒有實現,和Product類中并沒有任何屬性或方法,但其實不影響其瀏覽性,在具體的建造進程中,才會出現對應的產品
和相應的實現進程。
簡單的建造模式,就是如此。
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈