### 建造者模式
將一個復雜對象的構建與它的表示分離,使得同樣的構建過程可以創建不同的表示。(摘抄)
通俗來說就是你只需要指定創建的類型是什么,創建的過程不變,就可以得到不同的表示對象。
使用建造者模式首先定義一個產品類,然后通過產品類知道需要具體建造哪些部分,然后創建建造者類,定義好創建的抽象方法,再創建具體建造者類,實現具體的內容,最后創建一個指揮者類,來指揮建造過程.
~~~
import javax.naming.directory.DirContext;
class Product
{
a,b,c;
public void show()
{
System.out.println(a+b+c);
}
}
abstract class Builder
{
public abstract void BuilderA();
public abstract void BuilderB();
public abstract void BuilderC();
public abstract Product getProduct();
}
class ConcreteBuilder1 extends Builder
{
private Product product = new Product();
@Override
public void BuilderA()
{
product.a = 功能3;
}
@Override
public void BuilderB() {
// TODO Auto-generated method stub
product.b = 功能4;
}
@Override
public void BuilderC() {
// TODO Auto-generated method stub
product.c = 功能5;
}
@Override
public Product getProduct() {
// TODO Auto-generated method stub
return product;
}
}
class ConcreteBuilder2 extends Builder
{
private Product product = new Product();
@Override
public void BuilderA() {
// TODO Auto-generated method stub
product.a = 功能6;
}
@Override
public void BuilderB() {
// TODO Auto-generated method stub
product.b = 功能7;
}
@Override
public void BuilderC() {
// TODO Auto-generated method stub
product.c = 功能8;
}
@Override
public Product getProduct() {
// TODO Auto-generated method stub
return product;
}
}
class Director
{
public void Construct(Builder builder)
{
builder.BuilderA();
builder.BuilderB();
builder.BuilderC();
}
}
class Client
{
public static void main()
{
Director director = new Director();
ConcreteBuilder1 b1 = new ConcreteBuilder1();
ConcreteBuilder2 b2 = new ConcreteBuilder2();
director.Construct(b1);
Product p1 = b1.getProduct();
director.Construct(b1);
Product p2 = b2.getProduct();
}
}
~~~
建造者模式把創建對象時裝配的代碼隱藏起來了,當創建新的對象的時候不需要了解創建的過程,只需要知道需要創建哪一種對象即可。
建造者模式創建的對象一般都是內部結構的建造順序通常時穩定的,但對象內部的構建通常面臨者許多變化。
同時用建造者模式創建復雜的對象,在給其添加功能時可以節約很多代碼,相當于把很多重復的代碼寫到了具體的創建類中,同時需要增加具有新功能的對象的時候只需要再多寫一個具體建造者類就可以了。
### 總結
建造者模式是在當創建復雜對象的算法應該獨立于該對象的組成部分以及它們的裝配方式時適用的模式。(摘抄)
當使用建造建議靈活使用,不要呆板的去套用這個規則,例如這個對象在整個程序中都只需要創建一次,那就沒有必要再去把它抽象成這種建造者模式了。
- 前言
- (1)代碼無錯就是優?——簡單工廠模式
- (2)商場促銷——策略模式
- (3)&(4)&(5) 設計模式原則
- (6)穿什么有這么重要?——裝飾模式
- (7)為別人做嫁衣——代理模式
- (8)雷鋒依然在人間——工廠方法模式
- (9)簡歷復印——原型模式
- (10)考題抄錯會做也白搭——模板方法模式
- (11)迪米特法則
- (12)牛市股票還會虧錢?—— 外觀模式
- (13)好菜每回味不同——建造者模式
- (14)老板回來,我不知道——觀察者模式
- java實現事件委托
- (15)就不能不還DB嗎?—— 抽象工廠模式
- (16)無盡加班何時休息——狀態模式
- (17)在NBA我需要翻譯——適配器模式
- (18)如果再回到從前——備忘錄模式
- (19)分公司=部門——組合設計模式
- (20)想走?可以!先買票——迭代器模式
- (21)有些類也需計劃生育——單例模式
- (22)手機軟件何時統一——橋接模式
- (23)烤羊肉串引來的思考——命令模式
- (24)加薪非要老總批?——職責鏈模式
- (25)世界需要和平——中介者模式
- (26)項目多也別傻做——享元模式
- (28)男人和女人——訪問者模式