很久沒有拿出時間來寫一些東西了。最近在學習設計模式的內容,收益匪淺,打算寫乙個系列。
將複雜的子系統內容,整合成簡約、學習成本低的介面。我們早晨出門上班,雖然每天都做得沒有感覺複雜,但是在**中體現,就會是這樣:
breadmarker.make();
door.open();
dorr.close();
car.start();//省略插鑰匙等等操作
car.run();
……company.punchcard();
computer.init();
computer.openoffice();
是不是突然發現,每天早晨做的事情,原來這麼複雜!那我每次在上班的時候,如果漏掉了一項怎麼辦(忘記房門鑰匙,公司員工卡等)?
可以看出,複雜的子系統對使用者來說,學習成本太高,並且容易出現漏洞。那麼我們將這些子系統介面統一起來:
/*
* 上班
*/public void gotowork()
以後在要「上班」的時候,只要呼叫gotowork()
方法,就能快捷實現功能,不需要學習那麼多的子系統介面。這樣降低了學習成本,並且提高效率。
這樣,我們就實現了外觀模式,並且:我們不將子系統介面阻隔,使用者想要實現自定義功能時,依然可以呼叫子系統的內容,比如不想鎖門等等。
外觀模式是設計模式中非常簡單的一種,在平時編寫程式時,我們也會不自覺的將可復用功能**封裝提取。
外觀模式:內部整合複雜的子系統介面
設計模式學習 外觀模式
facade模式也叫外觀模式,是由gof提出的23種設計模式中的一種。facade模式為一組具有類似功能的類群,比如類庫,子系統等等,提供乙個一致的簡單的介面。這個一致的簡單的介面被稱作facade 外部與乙個子系統的通訊必須通過乙個統一的外觀物件進行,為子系統中的一組介面提供乙個一致的介面,外觀模...
iOS 設計模式學習 外觀模式
最近在學習 objective c程式設計之道 ios設計模式解析 本文是對外觀模式的乙個分析和例子實現。裡面包含書的例子。標籤 介面適配 外觀模式為子系統中一組不同的介面提供統一的介面。外觀定義了上層介面,通過降低複雜度和隱藏子系統間的通訊及依存關係,讓子系統更易於使用。類圖如下 子系統正逐漸變得...
設計模式學習之外觀模式
uml結構類圖的常用畫法 簡單工廠 demo傳送門 案例 有modulea,moduleb,modulec三個類,這三個類實現三個不同的方法 1.按照普通思路,客戶端如果想要和這三個類打交道,一般的做法就是直接引入三個類,分別進行例項化,然後引用三個類中的方法 2.採用外觀模式,客戶端無需知道這三個...