国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

(八)建造者模式(builder)

2019-11-08 18:52:58
字體:
來源:轉載
供稿:網友

建造者模式(builder),將一個復雜對象的構建與它的表示分離,使得同樣的構建過程可以創建不同的表示。

這里寫圖片描述

Dirextor: 指揮者類,用于統一組裝流程Builder:抽象Builder類,規范產品的組建,一般是由子類實現。DFCarBuilder: 抽象Builder類的實現類,實現抽象Builder類定義的所有方法,并且返回一個組建好的對象Car:產品類

舉個建造汽車的例子,現在要建造一輛汽車,需要發動機,變速箱,底盤(汽車三大件)

產品類:

public class Car { PRivate String engine; // 發動機引擎 private String transmission; // 變速箱 private String chassis; // 底盤 public String getEngine() { return engine; } public void setEngine(String engine) { this.engine = engine; } public String getTransmission() { return transmission; } public void setTransmission(String transmission) { this.transmission = transmission; } public String getChassis() { return chassis; } public void setChassis(String chassis) { this.chassis = chassis; } @Override public String toString() { return "Car{" + "engine='" + engine + '/'' + ", transmission='" + transmission + '/'' + ", chassis='" + chassis + '/'' + '}'; }}

抽象建造者

public abstract class Builder { public abstract void buildEngine(String engine); public abstract void buildTransmission(String transmission); public abstract void buildChassis(String chassis); public abstract Car create();}

建造者

public class DFCarBuilder extends Builder { private Car dfCar = new Car(); @Override public void buildEngine(String engine) { dfCar.setEngine(engine); } @Override public void buildTransmission(String transmission) { dfCar.setTransmission(transmission); } @Override public void buildChassis(String chassis) { dfCar.setChassis(chassis); } @Override public Car create() { return dfCar; }}

用Dirextor指揮者類來統一組裝過程

public class Dirextor { Builder builder = null; public Dirextor(Builder builder) { this.builder = builder; } public Car createCar(String engine, String transmission, String chassis){ this.builder.buildChassis(chassis); this.builder.buildEngine(engine); this.builder.buildTransmission(transmission); return builder.create(); } public static void main(String[] args) { Builder builder = new DFCarBuilder(); Dirextor dirextor = new Dirextor(builder); Car myCar = dirextor.createCar("地球夢科技發動機", "愛信9AT自動變速箱", "標志的底盤"); System.out.println(myCar.toString()); }}

使用場景:

當創建復雜對象的算法應該獨立于該對象的組成部分以及它們的裝配方式時。相同的方法,不同的執行順序,產生不同的事件結果時。多個部件或零件,都可以裝配到一個對象中,但是產生的運行結果又不相同時。產品類非常復雜,或者產品類中的調用順序不同產生了不同的效能。創建一些復雜的對象時,這些對象的內部組成構件間的建造順序是穩定的,但是對象的內部組成構件面臨著復雜的變化。

優點:

使用建造者模式可以使客戶端不必知道產品內部組成的細節。具體的建造者類之間是相互獨立的,容易擴展。由于具體的建造者是獨立的,因此可以對建造過程逐步細化,而不對其他的模塊產生任何影響。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 彭山县| 皮山县| 沙雅县| 洱源县| 勐海县| 灯塔市| 巴里| 卓尼县| 乐都县| 连山| 乌兰察布市| 宝丰县| 普兰县| 九江市| 衡阳市| 神农架林区| 沙田区| 西畴县| 新野县| 阳城县| 三江| 阿尔山市| 眉山市| 银川市| 岳西县| 贵定县| 塘沽区| 济南市| 江油市| 贡嘎县| 灵台县| 曲松县| 萍乡市| 麦盖提县| 芮城县| 科技| 蓝田县| 桓仁| 新疆| 四平市| 微山县|