我所了解的java設計模式之建造者模式

2021-08-07 02:56:59 字數 2305 閱讀 5431

建造者模式:將乙個複雜物件的構造與它的表示分離,使同樣的構建過程可以建立不同的表示,這樣的設計模式被稱為建造者模式。

建造者模式於抽象工廠模式區別:

建造者模式關注的是零件型別和裝配工藝(順序),而工廠模式是建立乙個物件,這是最大不同的地方。

這裡是更詳細的說法:

director:控制者類,這是控制整個組合過程,在這個類內部有個construct()方法,這個方法的作用就是通過呼叫builder內部的各個元件的生成方法來完成組裝;

builder:構建者介面,定義各部件生成的方法;

concretebuilder:具體構建者類:實現builder構建者介面,具體定義如何生成各個部件;依賴於product成品類,其中還有獲取成品組裝結構的方法getresult()方法;

product:成品類

簡單地說,就好象我要一機械人玩,可是我不知道怎麼生產組裝,也不知道啥樣的好,於是我需要找一幫零件生產商(建造者),他們會製造相應的零件組裝,他知道怎麼生產組裝,還需要懂機械人的專家(建造管理者)保證質量,和我要的需求,我還要確保零件商聽專家的安排,生產需要的零件,而專家只需要,和商家要東西,這樣零件商開始生產,最後由廠商提供給我,最後機械人就有了!專家不用懂去生產組裝,只要命令和需求,最後還是我去和廠商要

/**

* 建造者

* @author lz

* */

public inte***ce builder

/**

* 建立小型機器

* @author lz

* */

public class smallbuilder implements builder

@override

public void creatmechanicalbody()

@override

public void creatcontrolsystem()

@override

public void creatsensor()

@override

public void creatdrive()

@override

public robot createrobot() /**

* 建立大型機器

* @author lz

* */

public class bigbuilder implements builder

@override

public void creatmechanicalbody()

@override

public void creatcontrolsystem()

@override

public void creatsensor()

@override

public void creatdrive()

@override

public robot createrobot()

/**

* 機械人

* * @author lz

* */

public class robot

public void setmechanicalbody(string mechanicalbody)

public string getcontrolsystem()

public void setcontrolsystem(string controlsystem)

public string getsensor()

public void setsensor(string sensor)

public string getdrive()

public void setdrive(string drive) /**

* 大型的機械人

* @author lz

* */

public class bigrobot extends robot /**

* 小型的機械人

* @author lz

* */

public class smallrobot extends robot

/**

* 指揮者

* @author lz

* */

public class robotdirector

}

/**

* 客戶想要的

* @author lz

* */

public class main

}

你所了解的設計模式

定義 示例 singletonpattern 單例模式的特點 1 私有的構造方法 2 私有的靜態的變數 3 自定義的例項化的方法 public class singleton 要素2 靜態私有成員變數 private static singleton objinstance 要素3 public s...

我所了解的設計模式和物件導向 一

設計模式在我看來都是讓 更好的符合oo原則,設計模式都是圍繞oo原則展開,當然這是我自己個人的理解。oo原則,一般來說都是講的五大原則 1.srp single responsibility principle 單一職責原則,高內聚.2.ocp closed for modification ope...

我所了解的cgi

對於cgi,一開始我並沒有理解,一些概念性的東西,常常使我陷入咬文嚼字的陷阱裡。我希望找到乙個通俗易懂的案例,下面這段資料我個人覺得講得非常清楚 最早的web伺服器簡單地響應瀏覽器發來的http請求,並將儲存在伺服器上的html檔案返回給瀏覽器,也就是靜態html。事物總是不斷發展,也越來越複雜,所...