設計模式 10)建造者模式

2022-06-05 12:48:09 字數 1947 閱讀 3561

假設你是個木工手藝人,會做各種高矮胖瘦的人物,現在讓你做乙個男生和女生。

class person

public void show()

}

class personwomanbuilder

}class personmanbuilder

}

personwomanbuilder womanbuilder = new personwomanbuilder ();

womanbuilder .builder();

personmanbuilder manbuilder = new personmanbuilder();

manbuilder .builder();

很明顯,上面在做男生的時候,漏了乙個步驟,加男眉毛。

因此我們建乙個抽象類,讓各種人物都需要繼承這個抽象類,實現規定的抽象方法。

abstract class personbuilder

class personmanbuilder : personbuilder

public override void buildhand()

...}class personwomanbuilder : personbuilder

public override void buildhand()

}

到這一步,我們就可以避免建造人物的時候,缺失步驟。

然後我們再設計乙個指揮官,用它來控制建造的控制,避免需要在客戶端依次呼叫建造人物的各個部位,從而避免漏掉用某個部位,隔離使用者與建造過程的關聯。

class persondirector

public void createperson()

}// 業務**

persondirector pdwoman = new persondirector(new personwomanbuilder());

pdwoman.createperson();

persondirector pdman = new persondirector(new personmanbuilder());

pdman.createperson();

深入理解一下:

class personproduct

public void show()

}}abstract class personbuilder

class manpersonbuilder : personbuilder

public override void builderpartb()

public override personproduct getresult()

}class womanpersonbuilder : personbuilder

public override void builderpartb()

public override personproduct getresult()

}class director

} public class builderviewmodel

}

設計乙個產品 product,設計乙個生產者 builder 抽象類,規定需要實現的方法,設計乙個指揮官 director,實現乙個生產流程(傳入乙個生產者,執行生產者的某些方法);

設計不同型別的生產者繼承 builder,不同的生產者實現抽象方法,在抽象方法中實現各自對產品 product 的設計;

將不同型別的生產者 builder 傳入並由 指揮官 director 指揮 生產 產品 product。

可用於生成 不同**、不同大小的人物 等場景。

設計模式 建造者模式(10)

一 定義 建造者模式將乙個複雜物件的構建與他的表示分離,使得同樣的構建過程可以建立不同的表示。二 框架運用 httpclient框架在構建client時就用到了建造者模式 三 實戰 1 產品類 public class product public void show 2 建造類 public ab...

設計模式 建造者模式

在gof的23種設計模式中對builder pattern的定義是 將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。從程式角度來說,就是在基類定義某種事物建立的過程或業務流程,在子類進行重寫或是使用基類方法。這樣建立出來的例項不會因為過程或流程的丟失而使業務失敗。舉例來說,...

設計模式建造者模式

今天看了乙個設計模式。總結下,以免忘了。如何引入建造者模式的呢?作者舉了個例子。建造小人。當然需要 頭,左手,右手,左腳,右腳,軀幹。建造的過程使用 使用類裡面的方法就行了。但是如果需要乙個胖的小人,乙個瘦的小人呢?就需要重新構造乙個胖人類,乙個瘦人類。當然 使用者還需要自己處理構造的過程。這樣 就...