外觀模式提供了乙個統一的介面,用來訪問子系統中的一群介面。外觀定義了乙個高層介面,讓子系統更容易使用。
看個例子
一台電腦的開機,需要經過bios load,主引導記錄mbr,硬碟啟動…每一步都是乙個複雜的子系統。然而我們的使用者在開機的時候,肯定不會是自己一步一步這樣開機,只會按乙個開機鍵。開機鍵就是封裝開機的所有必須經過的步驟。
設計原則
最少知識原則:只和你的密友談話就任何物件而言,在改物件的方法內,我們只應該呼叫屬於以下範圍的方法:
// 沒有用原則,這裡從氣象站取得了溫度計物件,然後再從溫度計物件取得溫度
func
gettemp()
float64
// 採用原則,這裡在氣象站 中加進乙個方法,用來想溫度計請求溫度。這可以減少我們所依賴的類的書目
func
gettemp()
float64
type car struct
func
(c *car)
start
(key key)
}func
(c *car)
updatedashboarddisplay()
意圖
封裝監護,簡化呼叫
範例**
type cpu struct
func
(this *cpu)
freeze()
func
(this *cpu)
jump
(position int64
)func
(this *cpu)
execute()
type memory struct
func
(this *memory)
load
(position int64
, data [
]byte
)type harddrive struct
func
(this *harddrive)
read
(lba int64
, size int64)[
]byte
type computer struct
func
newcomputer()
*computer
}func
(this *computer)
start()
func
main()
package computer
import
"system"
var cpu *system.cpu
var memory *system.memory
var harddrive *system.harddrive
func
init()
func
start()
import
"computer"
...computer.
start
()
總結 設計模式 外觀模式
外觀模式,我的理解就是將複雜的類進行重新封裝,將簡單的介面呈現出來,降低呼叫端和實際類的耦合性。拿 大話設計模式 上邊關於 和 的例子來說。對於不入門的股民來說,交易有些過於龐大,需要學習的東西很多,如果沒整明白就進行投資,很容易賠錢的。很多剛入 的股民都賠的很慘。而買 有提出了乙個新的觀念,我們買...
設計模式 外觀模式
何為外觀模式?外觀模式 為子系統中的一組介面提供乙個一致的介面,此模式定義了乙個高層介面,這個介面使得一子系統更加容易使用。它是一種結構型模式,它主要解決的問題是 元件的客戶和元件中各種複雜的子系統有了過多的耦合,隨著外部客戶程式和 各子系統的演化,這種過多的耦合面臨很多變化的挑戰。uml類圖 乙個...
設計模式 外觀模式
外觀模式說白了就是為一組介面提供乙個一致的介面。例如 定義三個類a b c,每個類各定義乙個方法。class a pubic void showa cout a showa pubic void showb cout b showb pubic void showc cout c showc 定義乙...