核心思想
外觀模式是由代理模式發展而來的,與代理模式類似,代理模式是一對一的代理,而外觀模式是一對多的代理。 在真實的子系統中,一個子系統可能有很多類組成,子系統的客戶爲了滿足它們的需要,需要和子系統中的一些類進行交互。客戶和 子系統的類進行直接交互會導致客戶端對象和子系統之間高度的耦合性。 外觀模式爲子系統提供了一個更層次、更簡單的接口,從而降低了子系統的複雜度和依賴。 外觀模式可以爲一些複雜的類白裝成一個簡單的封閉接口,外觀模式對客戶端屏蔽了複雜的子系統組件,併爲一般的客戶提供了一個簡單的程序設計接口。但是它並沒有高級用戶在需要時使用深層次的、較複雜的類。 |
目標類:CPU、Memory、Dist public class CPU { public void startup(){ System.out.println("啓動CPU"); } public void shutdown(){ System.out.println("關閉CPU"); } } public class Memory { public void startup(){ System.out.println("加載內存"); } public void shutdown(){ System.out.println("清空內存"); } } public class Dist { public void startup(){ System.out.println("加載硬盤"); } public void shutdown(){ System.out.println("卸載硬盤"); } } |
外觀模式: public class Computer { private CPU cpu; private Memory memory; private Dist dist; public Computer() { // TODO Auto-generated constructor stub cpu=new CPU(); memory=new Memory(); dist=new Dist(); } public void startup(){ System.out.println("開始啓動計算機"); cpu.startup(); memory.startup(); dist.startup(); System.out.println("啓動計算機完成"); } public void shutdown(){ System.out.println("開始關閉計算機"); cpu.shutdown(); memory.shutdown(); dist.shutdown(); System.out.println("關閉計算機完成"); } } |
測試類: public class User { public static void main(String[] args) { Computer compuer=new Computer(); compuer.startup(); compuer.shutdown(); } } |
結果: 開始啓動計算機 啓動CPU 加載內存 加載硬盤 啓動計算機完成 開始關閉計算機 關閉CPU 清空內存 卸載硬盤 關閉計算機完成 |
統一管理 |