外觀模式(Facade)在開發過程中的運用頻率非常高,尤其是在現階段各個第三方SDK充斥在我們的周邊,而這些SDK很大概率會使用外觀模式,通過一個外觀類使得整個系統的接口只有一個統一的高層接口,這樣能夠降低用戶的使用成本,也對用戶屏蔽了很多實現細節。
要求一個子系統的外部與其內部的通訊必須通過一個統一的對象進行。外觀模式提供一個高層次的接口,使得子系統更易于使用
門面模式的最大缺點就是不符合開閉原則,對修改關閉,對擴展開放,需求變化時,需要修改Facade的代碼,這樣相對風險比較大
在Android開發過程中,Context是最重要的一個類型,Context意為上下文,也就是程序的運行環境。它封裝了很多重要的操作。如startActivity()、sendBoradcast()、bindService等,因此,Context對開發者來說就是重要的高層接口。
我們都知道Context的實現類是ContextImpl。ContextImpl內部封裝了很多不同子系統的操作,例如Activity的跳轉、廣播、啟動服務、設置壁紙等,這些工作并不是在ContextImpl中實現,而是轉交給了具體的子系統進行處理。
用戶可以通過Context這個接口統一進行與Android系統的交互,這樣用戶通過情況下就不需要對每個子系統進行了解,例如啟動Activity時用戶不需要手動調用mMainThread.getInstrumentation().execStartActivity函數進行執行,發送廣播時也不需要直接操作ActivityManagerNative類。用戶于系統服務的交互都通過Context的高層接口,這樣對用戶屏蔽了具體的實現細節,降低了使用成本
關于Context的具體介紹可以參考博文: http://blog.csdn.net/junbin1011/article/details/54612858( Android之Context底層原理)
新聞熱點
疑難解答