問題
坦克根據外部環境不一樣,可以分別由引擎、控制器、車輪、車身等組合構成。
動機當客戶程式與各子系統有過多的耦合,隨著客戶程式和各子系統的演化,這種過多的耦合面臨很多變化的挑戰。
如何簡化客戶程式和子系統間的互動介面?如何將客戶程式的演化和內部的子系統的變化之間依賴相互解耦?
意圖為子系統中的一組介面提供乙個一致的介面,facade模式定義了乙個高層介面,這個介面使得這一子系統更加容易使用。
**public class wheel
public void waction2()
}public class engine
public void eaction2()
}public class bodywork
}public class controler
}改進...
internal class wheel
public void waction2()
}internal class engine
public void eaction2()
}internal class bodywork
}internal class controller
}public class tankfacade
public void stop()
public void run()
}uml
要點從客戶程式的角度來看,facade模式不僅簡化了整個元件系統介面,同時對於元件內部與外部客戶程式來說,從某種程式上也達到了一種解耦的效果,內部子系統的任何變化不會影響到facade介面的變化。
facade設計模式更注重從架構的層次去看整個系統,而不是單個類的層次。facade很多時候更是一種架構設計模式。
注意區分facade模式、adapter模式,bridge模式與decorator模式。
facade模式注重簡化介面與其實現。
adapter模式注重轉換介面。
bridge模式注重分離介面與實現。
decorator模式注重穩定介面的前提下為物件擴充套件功能。
結構型模式 外觀 facade
為子系統中的一組介面提供乙個一致的介面,facade模式定義了乙個高層介面,這個介面使得這一子系統更加容易使用.main.cc include include runner club.h design pattern facade runner club two activitys recruit ...
結構型模式 facade 外觀
1.意圖 為子系統中的一組介面提供乙個一致的介面,facade模式定義了乙個高層介面。口使得這一子系統更加容易使用。2.動機 將乙個系統劃分成為若干個子系統有利於降低系統的複雜性。乙個常見的設計目標是使 子系統間的通訊和相互依賴關係達到最小。達到該目標的途徑之一是就是引入乙個外觀 facade 物件...
結構型模式 Facade(外觀)模式
定義 為子系統中的一組介面提供乙個一致的介面,外觀模式定義了乙個高層介面,這個介面使得這一子系統更加容易使用。定義角色 outlook功能 每個人都可能有很多郵箱,msn的 網易的 公司的 google的。如果每天都登入各個郵箱收信非常麻煩,而且也可能漏收郵件。所以使用諸如outlook這樣的客戶端...