外觀模式(facade pattern)隱藏系統的複雜性,並向客戶端提供了乙個客戶端可以訪問系統的介面。這種型別的設計模式屬於結構型模式,它向現有的系統新增乙個介面,來隱藏系統的複雜性。
這種模式涉及到乙個單一的類,該類提供了客戶端請求的簡化方法和對現有系統類方法的委託呼叫。
用乙個簡單的例子來解釋一下吧,電腦整機是 cpu、記憶體、硬碟的外觀。有了外觀以後,啟動電腦和關閉電腦都簡化了。直接 new 乙個電腦,在 new 電腦的同時把 cpu、記憶體、硬碟都初始化好並且接好線。對外暴露方法(啟動電腦,關閉電腦):
class program
}public class cpu
public void shutdown()
}public class disk
public void shutdown()
}public class memory
public void shutdown()
}public class computer
public void start()
public void shutdown()
}
輸出結果
computer start begin
cpu is start...
disk is start...
memory is start...
computer start end
***************==
computer shutdown begin
cpu is shutdown...
disk is shutdown...
memory is shutdown...
computer shutdown end...
這種實現方式就類似三層架構。不過雖然客戶端與外觀類之間解耦了,但是外觀類內部耦合還是很嚴重的
外觀模式的優點:
外觀模式的缺點:
設計模式10 外觀模式
外觀模式 facade pattern 外部與乙個子系統的通訊必須通過乙個統一的外觀物件進行,為子系統中的一組介面提供乙個一致的介面,外觀模式定義了乙個高層介面,這個介面使得這一子系統更加容易使用。外觀模式又稱為門面模式,它是一種物件結構型模式。外觀模式包含如下角色 結果 operation a.o...
Java設計模式10 外觀模式
外觀模式 也稱為門面模式 定義了乙個高層介面,為子系統中的一組介面提供了乙個一致的介面,從而使得這一組子系統更加容易使用。這個模式很好的遵循了迪公尺特法則 最少知識法則 即乙個軟體應當盡可能少的與其他實體發生相互作用。醫院例子 現代的軟體系統都是比較複雜的,設計師處理複雜系統的乙個常見方法便是將其 ...
設計模式完結 10 外觀模式
來個中間類 即 外觀類 來關聯多個業務類,與多個業務互動,客戶端與外觀類互動,降低客戶端和這些類的耦合。如果業務類有變化,外觀類 定義為 抽象類,多個實現。乙個客戶類需要和多個業務類互動,而這些需要互動的業務類經常會作為乙個整體出現,由於涉及到的模擬較多,導致使用時 較為複雜,此時,特別需要乙個類似...