假設你是個木工手藝人,會做各種高矮胖瘦的人物,現在讓你做乙個男生和女生。
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的定義是 將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。從程式角度來說,就是在基類定義某種事物建立的過程或業務流程,在子類進行重寫或是使用基類方法。這樣建立出來的例項不會因為過程或流程的丟失而使業務失敗。舉例來說,...
設計模式建造者模式
今天看了乙個設計模式。總結下,以免忘了。如何引入建造者模式的呢?作者舉了個例子。建造小人。當然需要 頭,左手,右手,左腳,右腳,軀幹。建造的過程使用 使用類裡面的方法就行了。但是如果需要乙個胖的小人,乙個瘦的小人呢?就需要重新構造乙個胖人類,乙個瘦人類。當然 使用者還需要自己處理構造的過程。這樣 就...