外觀模式的目的是對系統核心功能的提純,通過爲子系統提供一個接口,來方便使用。
常見的比如swing 的 JOptionPane.showConfirmDialog()
,如果直接使用JOptionPane的構造函數來構造無疑會很麻煩,需要設置很多參數,而該功能卻是在開發過程中常常需要用到的,這時候將其提純出來,直接通過靜態函數的方式,預配置一些行爲,這種方式就可以稱之爲外觀模式。
外觀模式的目的是爲了隱藏系統的一些複雜實現,僅提純出核心的部分來供外部調用。
這一模式的設計方式有很多種,可以通過設置一個類似於工具類那樣的全靜態方法類,也可以通過給原本的類新增靜態方法的方式。外觀模式的目的並不是完全封裝實現,只是提供一個可供預覽,一目瞭然的接口。
外觀能減少一些系統的複雜度,當然僅僅在不使用系統更復雜的功能的時候。
如此說來,外觀和工具函數有什麼區別呢?
JOptionPane的類圖(省去了實例屬性)