外觀模式提供了乙個統一的介面,用來訪問子系統中的一群介面。外觀定義了乙個高層介面,讓子系統更容易使用。
要點:
(1)子系統元件a
/**
* 子系統元件a
*/public class componenta
}
(2)子系統元件b/**
* 子系統元件b
*/public class componentb
}
(3)子系統元件c/**
* 子系統元件c
*/public class componentc
}
外觀類的方法封裝了子系統元件的一系列方法。這樣,客戶就可以通過外觀類的方法,來一次性呼叫一系列子系統元件的方法。而不是乙個個去呼叫子系統元件的方法。
/**
* 外觀類
*/public class facade
/*** 通過外觀類,請求子系統元件
*/public void request()
}
public class test
}
不僅如此,看完電影後,你還要把一切都關掉。使用你的家庭影院竟變得如此複雜!於是你決定公升級你的系統……
使用外觀模式將看電影相關的一系列操作,封裝到外觀的 watchmovie() 方法中。這樣一來,要看電影的時候,只需要進行乙個「看電影」的操作就行了。同理,可將看完電影相關的一系列操作,封裝到 endmovie() 方法中。
(1)建立家庭影院子系統元件
/**
* 功放
*/public class amplifier
/*** 關閉功放
*/public void off()
/*** 設定***
*/public void set***(***player ***)
/*** 設定為環繞立體聲
*/public void setsurroundsound()
/*** 調節音量
*/public void setvolume(int volume)
}
/**
*/public class ***player
/***/
public void off()
/***/
public void play(string movie)
/***/
public void stop()
/*** 彈出***
*/public void eject()
}
/**
* 投影儀
*/public class projector
/*** 關閉投影儀
*/public void off()
/*** 設為寬屏模式
*/public void widescreenmode()
}
/**
* 影院燈光
*/public class theaterlights
/*** 調暗燈光
*/public void dim(int level)
}
/**
* 螢幕
*/public class screen
/*** 公升起螢幕
*/public void up()
}
/**
* 爆公尺花機
*/public class popcornpopper
/*** 關閉爆公尺花機
*/public void off()
/*** 開始爆公尺花
*/public void pop()
}
(2)建立家庭影院外觀/**
* 家庭影院外觀
*/public class hometheate***cade
/*** 看電影
*/public void watchmovie(string movie)
/*** 看完電影
*/public void endmovie()
}
(3)使用家庭影院外觀**電影public class test
}
Head First設計模式之外觀模式
外觀模式提供了乙個統一的介面,用來訪問子系統中的一群介面。外觀定義了乙個高層介面,讓子系統更容易使用。外觀模式不只是簡化了介面,也將客戶從元件的子系統中解耦。外觀和介面卡可以包裝許多類,但是外觀強調的是簡化介面,而介面卡是為了將介面轉換成不同的介面。外觀角色 facade 是模式的核心,他被客戶cl...
調侃《Head First設計模式》之外觀模式
看下這些元件的類圖 用 實現就是 這時候你應該很煩了 看個電影要開啟這麼多開關真tm煩!而且看完電影後還要把開關都關一遍,甚至聽cd都很麻煩。怎麼辦呢?解決方案很簡單,你需要的只是增加乙個類將各種開關介面包裝起來。如圖hometheate cade類 hometheate cade對外暴露幾個介面,...
headfirst設計模式
花了一周多一點的時間看完了headfirst的設計模式。看完之後有一種恍然大悟的感覺,仔細想想有覺得自己好像什麼也看懂。簡單說下對這本書的一點感悟吧,headfirst的書比較通俗易懂,之前看了四人幫的設計模式,看一半就有一種痛不欲生的感覺,自己水平有限,看不懂,也就沒在勉強自己了。對於模式其實簡單...