建造者模式(生成器模式)
生活随笔
收集整理的這篇文章主要介紹了
建造者模式(生成器模式)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一,定義
建造者模式:也叫生成器模式,將一個復雜對象的構建與它的表示分離,使得同樣的構建過程可以創建不同的表示。
二,結構
Builder:為創建一個Product對象的各個部件指定抽象接口
ConcreteBuilder:具體建造者,實現Builder接口,構造和裝備各個部件,
Product:具體的產品角色
Director:指揮者,可根據用戶需求構建對象,她是構建一個使用Builder接口的對象。
三,示例
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(); }public class ThinPerson extends PersonBuilder {@Overridepublic void buildHead() {System.out.println("畫一個人頭(瘦)");}@Overridepublic void buildBody() {System.out.println("畫一個身體(瘦)");}@Overridepublic void buildArmLeft() {System.out.println("畫一個左胳膊(瘦)");}@Overridepublic void buildArmRight() {System.out.println("畫一個右胳膊(瘦)");}@Overridepublic void buildLegLeft() {System.out.println("畫一個左腿(瘦)");}@Overridepublic void buildLegRight() {System.out.println("畫一個右腿(瘦)");} }public class PersonDirector {//指揮者private PersonBuilder builder;public PersonDirector(PersonBuilder builder){this.builder = builder;}public void creatPerson(){builder.buildHead();builder.buildBody();builder.buildArmLeft();builder.buildArmRight();builder.buildLegLeft();builder.buildLegRight();} }//test main //建造者模式 public static void builderModel(){/構建一個瘦子 // ThinPerson person = new ThinPerson();//構建一個胖子FatPerson person = new FatPerson();PersonDirector director = new PersonDirector(person);director.creatPerson();}四,總結
優點:
- 1,使用生成器模式可以使客戶端不必知道產品內部組成的細節。
- 2,具體的建造者類之間是相互獨立的,對系統的擴展非常有利。
3,由于具體的建造者是獨立的,因此可以對建造過程逐步細化,而不對其他的模塊產生任何影響。
應用場景:
1,主要用于創建一些復雜的對象,這些對象內部構建的構建順序通常是穩定的,但對象內部的構建通常面臨著復雜的變化。每一個內部成分本身可以是對象,也可以使一個對象的一個組成部分。
- 2,需要生成的產品對象的屬性相互依賴。建造模式可以強制實行一種分步驟進行的建造過程。
- 3,在對象創建過程中會使用到系統中的其他一些對象,這些對象在產品對象的創建過程中不易得到
參考:《大話設計模式》阿木俠 Java知音
示例代碼:https://github.com/wangxp423/ExerciseDesignmodel
總結
以上是生活随笔為你收集整理的建造者模式(生成器模式)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Audio HAL 通话录音上下行分离
- 下一篇: 我的世界启动器java_我的世界最新启动