一、介紹
場景:
-- 建造乙個複雜的產品。比如:神舟飛船,iphone,這個複雜的產品建立,
有這樣乙個問題需要處理:裝配這些子元件,是不是有個步驟問題?
-- 實際開發中,需要的物件,在構建時,也非常複雜,有很多步驟需要處理。
建造者模式的本質:
-- 分離物件子元件的單獨構造(由builder來負責)和裝配(由director負責)。
從而可構造出複雜的物件。
此模式適用於,物件的構建過程複雜的情況下使用。
-- 由於實現構建和裝配的解耦,
不同的構造器,相同的裝配,可以做出不同的物件。
相同的構建器,不同的裝配順序,可以產生不同的物件。
實現構建演算法、裝配演算法的解耦,實現更好的復用。
二、**示例
1、宇宙飛船物件
package cn.jin51.builder;
/** * 宇宙飛船
*/public
class
airship
public orbitalmodule getorbitalmodule()
public
void
setorbitalmodule
(orbitalmodule orbitalmodule)
public engine getengine()
public
void
setengine
(engine engine)
public escapetower getescapetower()
public
void
setescapetower
(escapetower escapetower)
}class
orbitalmodule
public string getname()
public
void
setname
(string name)
}class
engine
public string getname()
public
void
setname
(string name)
}class
escapetower
public string getname()
public
void
setname
(string name)
}
2、構建和組裝的介面
1)
package cn.jin51.builder;
public
inte***ce
airshipbuilder
2)
package cn.jin51.builder;
public
inte***ce
airshipdirector
3、構建和組裝的實現
1)
package cn.jin51.builder;
/** * 我們的構建
* stringbuilder,在xml解析中,jdom庫中的類:dombuilder、saxbuilder
*/public
class
ourairshipbuilder
implements
airshipbuilder
@override
public engine buildengine()
@override
public escapetower buildescapetower()
}
2)
package cn.jin51.builder;
/** * 我們的組裝
*/public
class
ourairshipdirector
implements
airshipdirector
@override
public airship directairship()
}
4、測試使用
package cn.jin51.builder;
public
class
client
}
設計者模式
1.單例模式 每個new出來的例項都需要有乙個相同的方法,但是這時候如果 每個例項都新建乙個這種方法,太佔據記憶體也太慢,所以在這裡有乙個重要的判斷 如果有例項,則返回例項 如果沒有例項,則建立例項,並且返回例項。例 class createuser return createuser.ins co...
設計者模式 觀察者模式
一,定義 觀察者模式又叫發布 訂閱模式 publish subscribe 觀察者模式定義了一種一對多的依賴關係,讓多個觀察者物件同時監聽某乙個主題物件.這個主體物件在狀態發生變化時,會通知所有的觀察者物件,是他們能夠自動更新自己 觀察者模式一般會牽扯至少兩個角色subject或publish,叫做...
c 設計者模式 工廠模式
1 面向介面程式設計 最簡單的表現形式是,你的變數要宣告成抽象基類 2 為什麼要實現面向介面程式設計 設計原則 依賴倒置原則 應該依賴抽象而不是細節。3 抽象基類是不能建立的,不能new的。4 建立物件的方法 除了在棧上 或者是在堆上建立物件,也可以通過方法返回物件。5 虛函式 執行時的依賴 模式定...