<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ## 1. 定義 >建造者模式(Builder Pattern)是指將一個復雜對象的構建過程與它的表示分離,使得同樣的構建過程可以創建不同的表示。 建造者模式通常包括下面幾個角色: 1、Builder:給出一個抽象接口,以規范產品對象的各個組成成分的建造。這個接口規定要實現復雜對象的哪些部分的創建,并不涉及具體的對象部件的創建。 2、ConcreteBuilder:實現Builder接口,針對不同的商業邏輯,具體化復雜對象的各部分的創建。在建造過程完成后,提供產品的實例。 3、Director:調用具體建造者來創建復雜對象的各個部分,在指導者中不涉及具體產品的信息,只負責保證對象各部分完整創建或按某種順序創建。 4、Product:要創建的復雜對象。 ## 2. 場景 >1、我們寫實體類時,總會加上get、set方法,若屬性很多是一件很麻煩的事情;若使用Lombok插件可以省去get、set的顯示設置,如 @Data 、@Builder等注解,其中@Builder注解使用了建造者模式構建鏈式調用。 2、**去肯德基,漢堡、可樂、薯條、炸雞翅等是不變的,而其組合是經常變化的,生成出所謂的"套餐"。** ## 3. 案例 >以游戲開發中人物的構造過程為例。在游戲中創建一個形象時,需要對每個部位進行創建。簡化而言,需要創建頭部,身體和四肢。 **`實現步驟思路:`** >1.創建一個Person? bean對象設置屬性和生成get set方法 2.創建一個PersonBuilder接口關鍵有一個返回Person的抽象方法BuilderPersion ,和void?builderHead(); 創建頭、身體、腳抽象方法 3.實現PersonBuilder接口ManBuilder 類中有一個Person屬性,構造方法進行new對象,實現接口方法進行創建賦值。 **`代碼結構:`** ![](https://img.kancloud.cn/9b/f4/9bf4210a2df263b2c42da0545dcb1b51_731x114.png) >`建立一個人物對象Person` ```java @Data public?class?Person?{ private?String?head; private?String?body; private?String?foot; } ``` >`Builder(給出一個抽象接口,以規范產品對象的各個組成成分的建造。` `這個接口規定要實現復雜對象的哪些部分的創建,并不涉及具體的對象部件的創建)` ```java public?interface?PersonBuilder { void?builderHead(); void?builderBody(); void?builderFoot(); Person BuilderPerson();?//組裝 } ``` >`ConcreteBuilder(實現Builder接口,針對不同的商業邏輯,具體化復雜對象的各部分的創建。` `在建造過程完成后,提供產品的實例)` ``` public class ManBuilder implements PersonBuilder { private Person person; public ManBuilder() { person = new Person();//創建一個Person實例,用于調用set方法 } public void builderHead() { person.setHead("建造者頭部分"); } public void builderBody() { person.setBody("建造者身體部分"); } public void builderFoot() { person.setFoot("建造者頭四肢部分"); } public Person BuilderPersion() { return person; } } ``` >` Director(調用具體建造者來創建復雜對象的各個部分,在指導者中不涉及具體產品的信息,` `只負責保證對象各部分完整創建或按某種順序創建)` ``` public class PersonDirector { public Person constructPerson(PersonBuilder pb) { pb.builderHead(); pb.builderBody(); pb.builderFoot(); return pb.BuilderPersion(); } public static void main(String[] args) { PersonDirector pb = new PersonDirector(); Person person = pb.constructPerson(new ManBuilder()); System.out.println(person.getHead()); System.out.println(person.getBody()); System.out.println(person.getFoot()); } } ``` ## 4. 總結 ``` 1、需要生成的對象具有復雜的內部結構。 2、需要生成的對象內部屬性本身相互依賴。 與工廠模式的區別是:建造者模式更加關注與零件裝配的順序。 ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看