大話設計模式筆記(十) 建造者模式

2022-05-02 03:12:09 字數 2631 閱讀 4897

畫乙個小人,有頭、身體、兩手、兩腳就可以了。

/**

* 人類

* created by callmedevil on 2019/7/21.

*/public class person

public void drawbody()

public void drawhand()

public void drawleg()

}

public class test 

}

頭 身體 兩手 兩腳
畫人的時候,頭身手腳是必不可少的,不管什麼人物,開發時是不能少的。但上面測試**中時各部分堆積起來,很容易漏寫,比如導致健全的人物卻少了一條「腿」。而且如果需要在別的地方用這些畫小人的程式怎麼辦?

/**

* 瘦人類

* created by callmedevil on 2019/7/21.

*/public class personthinbuilder

// 建造瘦子

public void build()

}

/**

* 胖人類

* created by callmedevil on 2019/7/21.

*/public class personfatbuilder

public class test2 

}

瘦人類:

頭 身體 兩手 兩腳

胖人類:

頭 身體 兩手 兩腳

這樣寫的確達到了可以復用這兩個畫小人的目的,但容易「缺胳膊少腿」的問題,依然沒有解決,比如現在需要加乙個高個的小人,同樣會因為程式設計不注意,產生同樣問題。

將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。如果使用建造者模式,那麼使用者就只需指定需要建造的型別就可以得到它們,而具體建造的過程和細節就不需要知道了。

* 建造人抽象類

* created by callmedevil on 2019/7/21.

*/public abstract class personbuilder

public abstract void buildhead();

public abstract void buildbody();

public abstract void buildarmleft();

public abstract void buildarmright();

public abstract void buildlegleft();

public abstract void buildlegright();

}

/**

* 瘦人類2

* created by callmedevil on 2019/7/21.

*/public class personthinbuilder extends personbuilder

@override

public void buildhead()

@override

public void buildbody()

@override

public void buildarmleft()

@override

public void buildarmright()

@override

public void buildlegleft()

@override

public void buildlegright()

}

/**

* 胖人類2

* created by callmedevil on 2019/7/21.

*/public class personfatbuilder extends personbuilder

/**

* 建造人指揮者

* created by callmedevil on 2019/7/21.

*/public class persondirector

// 根據使用者的選擇建造小人

public void createperson()

}

public class test 

}

瘦人類2:

頭 身體 左手 右手 左腳 右腳

胖人類2:

頭 身體 左手 右手 左腳 右腳

此時如果需要增加乙個高個子和矮個子的小人,應該怎麼做?

加兩個類,乙個高個子類和乙個矮個子類,都繼承personbuilder,然後客戶端呼叫即可。

大話設計模式學習(十) 建造者模式

建造者模式 將乙個複雜物件的構造與它的表示分離,使得同樣的構建過程可以建立不同的表示。建造者模式主要用於建立一些複雜的物件,這些物件內部構建之間的建造順序通常是穩定的,但物件內部的建構通常面臨著複雜的物件,它的好處在於使得建造 和表示 分離,由於建造者隱藏了該產品是如何組裝的,所以若需要改變乙個產品...

大話設計模式讀書筆記(十) 建造者模式

將乙個複雜物件的構建與他的表示分離,使同樣的構建過程可以建立不同的表示。具體產品類 public class product public void show 建造者介面 public inte ce builder建造者介面實現 public class concretebuilder imple...

大話設計模式 建造者模式

1 建造者模式 builder 又叫生成器模式,它是將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的比奧斯。如果我們用了建造者模式,那麼使用者就只需指定需要建造的型別就可以得到它們,而具體建造的過程和細節就不需知道了。2 建造者模式 builder 結構圖 3 建造者模式主要是用...