<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>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                ## **模式的定義** 定義:指將一個復雜對象的構造與它的表示分離,使同樣的構建過程可以創建不同的表示,這樣的被稱為建造者模式。它是將一個復雜的對象分解為多個簡單的對象,然后一步一步構建而成。它將變與不變相分離,即產品的組成部分是不變的,但每一部分是可以靈活選擇的。 ## **代碼實現** 需求:一家制作機器人的廠商需要打造一個機器人,那么可以把一整個構造過程分解為 ``` 1. 創建機器人身體 2. 創建機器人頭部 3. 創建機器人四肢 4. 最后組裝成一個完整的機器人 ``` 代碼實現 1. 創建機器人對象 ``` public class Robot { // 頭部 private String head; // 身體 private String body; // 四肢 private String limbs; // get set ... } ``` 2. 定義一個構建機器人的標準接口 ``` public interface RobotBuilder { // 創建頭部 void buildHead(); // 創建身體 void buildBody(); // 創建四肢 void buildLimbs(); // 組裝 Robot buildRobot(); } ``` 3. 定義完標準接口后,我們需要根據不同的需求來實現這個接口,比如創建一個男性的機器人 ``` public class MaleRobotBuilder implements RobotBuilder { private Robot robot; // 構造行數初始化機器人對象 public MaleRobotBuilder() { this.robot = new Robot(); } @Override public void buildHead() { robot.setHead("男性:頭大"); } @Override public void buildBody() { robot.setBody("男性:身體大"); } @Override public void buildLimbs() { robot.setLimbs("男性:四肢粗壯"); } @Override public Robot buildRobot() { return robot; } } ``` 4. 創建一個總工程師類來完成對機器人的組裝 ``` public class RobotDirector { public Robot construct(RobotBuilder robotBuilder) { robotBuilder.buildBody(); robotBuilder.buildHead(); robotBuilder.buildLimbs(); return robotBuilder.buildRobot(); } } ``` 5. 客戶端調用 ``` public static void main(String[] args) { // 指定建造一個男性的機器人 MaleRobotBuilder builder = new MaleRobotBuilder(); // 實例化總工程師 RobotDirector director = new RobotDirector(); // 組裝 Robot robot = director.construct(builder); System.out.println(robot.getBody()); System.out.println(robot.getHead()); System.out.println(robot.getLimbs()); } ``` ## **總結** 建造者模式中主要有以下四個角色: 1. Product:要創建的復雜對象(Robot)。 2. Builder:一個抽象接口,規范復雜對象的各個組成部分(RobotBuilder)。 3. ConcreteBuilder:針對不同的業務,實現Builder接口,具體實現各個復雜的功能,在建造完成后提供產品實例。 4. Director:總工程師,負責把各個復雜的部分按順序組裝成一個完整產品 使用場景: 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>

                              哎呀哎呀视频在线观看