Java設計模式
Java工廠設計模式
Java抽象工廠模式
Java單例模式
Java建造者(Builder)模式
Java原型模式
Java適配器模式
Java橋接模式
Java過濾器模式(條件模式)
Java組合模式
Java裝飾模式
Java門面模式(或外觀模式)
Java享元模式(Flyweight Pattern)
Java責任鏈模式
Java命令模式
Java迭代器模式
Java中介者模式(Mediator Pattern)
Java解釋器模式
Java備忘錄模式
Java觀察者模式
Java狀態模式
Java空對象模式
Java策略模式
Java模板模式
Java訪問者模式
Java MVC模式
Java業務代理模式
Java組合實體模式
Java數據訪問對象模式
Java前端控制器模式
Java攔截過濾器模式
Java服務定位器模式
Java傳輸對象模式
Java門面模式(或外觀模式)
門面模式(或外觀模式)隱藏系統的複雜性,併爲客戶端提供一個客戶端可以訪問系統的接口。 這種類型的設計模式屬於結構模式,因爲此模式爲現有系統添加了一個接口以隱藏其複雜性。
門面模式涉及一個類,它提供客戶端所需的簡化方法和委託調用現有系統類的方法。
實現實例
在這個實例中將創建一個Shape
接口並實現Shape
接口的具體類。在下一步中,將定義一個Facade
類ShapeMaker
,請在下一步中參考其代碼。
ShapeMaker
類使用具體類來將用戶調用委派給這些類。 FacadePatternDemo
這是一個演示類,它使用ShapeMaker
類來顯示結果。
門面模式(或外觀模式)的實現實例結構如下圖中所示 -
第1步
創建一個接口,如下 -
Shape.java
public interface Shape {
void draw();
}
第2步
創建實現幾個相同接口的具體類。
Rectangle.java
public class Rectangle implements Shape {
@Override
public void draw() {
System.out.println("Rectangle::draw()");
}
}
Square.java
public class Square implements Shape {
@Override
public void draw() {
System.out.println("Square::draw()");
}
}
Circle.java
public class Circle implements Shape {
@Override
public void draw() {
System.out.println("Circle::draw()");
}
}
第3步
創建一個外觀類。
ShapeMaker.java
public class ShapeMaker {
private Shape circle;
private Shape rectangle;
private Shape square;
public ShapeMaker() {
circle = new Circle();
rectangle = new Rectangle();
square = new Square();
}
public void drawCircle(){
circle.draw();
}
public void drawRectangle(){
rectangle.draw();
}
public void drawSquare(){
square.draw();
}
}
第4步
使用裝飾類來繪製各種類型的形狀。
FacadePatternDemo.java
public class FacadePatternDemo {
public static void main(String[] args) {
ShapeMaker shapeMaker = new ShapeMaker();
shapeMaker.drawCircle();
shapeMaker.drawRectangle();
shapeMaker.drawSquare();
}
}
第5步
驗證輸出,執行上面的代碼得到以下結果 -
Circle::draw()
Rectangle::draw()
Square::draw()