亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java怎么實現建造者模式

發布時間:2021-04-15 11:57:14 來源:億速云 閱讀:168 作者:小新 欄目:編程語言

這篇文章主要介紹java怎么實現建造者模式,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

一、什么是建筑者模式?

??建造者模式(Builder Pattern)使用多個簡單的對象一步一步構建一個復雜的對象。

??一個 Builder 類會一步一步構造最終的對象,該 Builder 類獨立于其他對象。

??建造者模式主要解決在軟件系統中,有時候面臨著"一個復雜對象"的創建工作,其通常由各個部分的子對象用一定的算法構成;由于需求的變化,這個復雜對象的各個部分經常面臨著劇烈的變化,但是將它們組合在一起的算法卻相對穩定。

二、建造者模式的具體實現

結構圖

java怎么實現建造者模式

建造者模式中的四個角色:

1、Builder:給出一個抽象接口,以規范產品對象的各個組成成分的建造。這個接口規定要實現復雜對象的哪些部分的創建,并不涉及具體的對象部件的創建。
2、ConcreteBuilder:實現Builder接口,針對不同的商業邏輯,具體化復雜對象的各部分的創建。 在建造過程完成后,提供產品的實例。
3、Director:調用具體建造者來創建復雜對象的各個部分,在指導者中不涉及具體產品的信息,只負責保證對象各部分完整創建或按某種順序創建。
4、Product:要創建的復雜對象。

java代碼實現

1、創建人類實體類

package com.designpattern.builderPattern;

/**
 * 對象 人
 *
 * @author zhongtao on 2018/9/17
 */
public class Human {

  private String head;
  private String body;
  private String hand;
  private String foot;

  public String getHead() {
    return head;
  }

  public void setHead(String head) {
    this.head = head;
  }

  public String getBody() {
    return body;
  }

  public void setBody(String body) {
    this.body = body;
  }

  public String getHand() {
    return hand;
  }

  public void setHand(String hand) {
    this.hand = hand;
  }

  public String getFoot() {
    return foot;
  }

  public void setFoot(String foot) {
    this.foot = foot;
  }
}

2、創建造人的 Builder 接口

package com.designpattern.builderPattern;

/**
 * 造人接口 規定造人的規范 需要頭、身體、手、腳
 *
 * @author zhongtao on 2018/9/17
 */
public interface BuilderHuman {

  void buildHead();

  void buildBody();

  void buildHand();

  void buildFoot();

  /**
   * 返回創建的對象
   */
  Human createHuman();

}

3、ConcreteBuilder 創建不同類型的人
tallPerson

package com.designpattern.builderPattern;

/**
 * 高個子的人
 *
 * @author zhongtao on 2018/9/17
 */
public class TallPersonBuilder implements BuilderHuman {

  Human human;

  public TallPersonBuilder() {
    human = new Human();
  }

  @Override
  public void buildHead() {
    human.setHead("普通的頭腦");
  }

  @Override
  public void buildBody() {
    human.setBody("壯實,高大的身體");
  }

  @Override
  public void buildHand() {
    human.setHand("長手");
  }

  @Override
  public void buildFoot() {
    human.setFoot("長腳");
  }

  @Override
  public Human createHuman() {
    return human;
  }
}

smartHuman

package com.designpattern.builderPattern;

/**
 * 聰明的人
 *
 * @author zhongtao on 2018/9/17
 */
public class SmartHumanBuilder implements BuilderHuman {

  Human human;

  public SmartHumanBuilder() {
    human = new Human();
  }

  @Override
  public void buildHead() {
    human.setHead("高智商的頭腦");
  }

  @Override
  public void buildBody() {
    human.setBody("健康的身體");
  }

  @Override
  public void buildHand() {
    human.setHand("普通的手");
  }

  @Override
  public void buildFoot() {
    human.setFoot("普通的腳");
  }

  @Override
  public Human createHuman() {
    return human;
  }
}

4、Director 建造者模式的核心 調用具體建造者來創建不同的人

package com.designpattern.builderPattern;

/**
 * 管理造人的順序 BuilderHuman不同,則創建的人不同
 * @author zhongtao on 2018/9/17
 */
public class HumanDirector {

  public Human createHumanByDirector(BuilderHuman builderHuman){
    builderHuman.buildHead();
    builderHuman.buildBody();
    builderHuman.buildHand();
    builderHuman.buildFoot();

    return builderHuman.createHuman();
  }
}

5、建造者模式測試

package com.designpattern.builderPattern;

import org.junit.Test;

/**
 * 測試
 *
 * @author zhongtao on 2018/9/17
 */
public class BuilderPatternTest {

  /**
   * 測試建造者模式
   */
  @Test
  public void test() {
    HumanDirector humanDirector = new HumanDirector();
    //創建高個子的人
    Human humanByDirector = humanDirector.createHumanByDirector(new TallPersonBuilder());
    System.out.println(humanByDirector.getHead());
    System.out.println(humanByDirector.getBody());
    System.out.println(humanByDirector.getHand());
    System.out.println(humanByDirector.getFoot());

    System.out.println("------簡單的分割線------");
    //創建聰明的人
    Human smartHuman = humanDirector.createHumanByDirector(new SmartHumanBuilder());
    System.out.println(smartHuman.getHead());
    System.out.println(smartHuman.getBody());
    System.out.println(smartHuman.getHand());
    System.out.println(smartHuman.getFoot());
  }
}

三、建造者模式的優缺點

優點:

建造者獨立,易擴展。
便于控制細節風險。

缺點:

產品必須有共同點,范圍有限制。
如內部變化復雜,會有很多的建造類。

注意事項:

與工廠模式的區別,建造者模式更加關注與零件裝配的順序。

以上是“java怎么實現建造者模式”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宜章县| 颍上县| 神池县| 饶平县| 托里县| 壶关县| 息烽县| 临漳县| 顺义区| 衡阳市| 鹤壁市| 喜德县| 五台县| 和政县| 永兴县| 通许县| 宝山区| 天柱县| 清水河县| 光泽县| 蓬安县| 襄樊市| 青阳县| 邢台市| 江达县| 禹城市| 通许县| 雷州市| 邵东县| 遂昌县| 晋江市| 鸡东县| 兴山县| 集贤县| 开平市| 雅安市| 新竹县| 泸水县| 于田县| 广东省| 柳河县|