設計者模式 構建者模式

2021-10-20 07:32:08 字數 2273 閱讀 8161

一、介紹

場景:

-- 建造乙個複雜的產品。比如:神舟飛船,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 虛函式 執行時的依賴 模式定...