類型:結(jié)構(gòu)型模式
實現(xiàn)原理:定義了一個高層接口,向現(xiàn)有的系統(tǒng)中的一組接口提供一致的界面
目的:降低訪問復雜系統(tǒng)的內(nèi)部子系統(tǒng)時的復雜度,簡化客戶端之間的接口,使系統(tǒng)更加容易使用
何時使用:簡化復雜系統(tǒng),方便操作
解決方法:對客戶端和系統(tǒng)解耦,讓外觀類與系統(tǒng)耦合
關(guān)鍵代碼:在客戶端和復雜系統(tǒng)之間再加一層,這一層將調(diào)用順序、依賴關(guān)系等處理好。
應用實例:電腦操作系統(tǒng)
優(yōu)點: 1、解耦 2、靈活 3、安全
缺點:不符合開閉原則,改東西麻煩,繼承重寫困難。文章來源:http://www.zghlxwxcb.cn/news/detail-658951.html
使用場景:為復雜的模塊或子系統(tǒng)提供外界訪問的模塊文章來源地址http://www.zghlxwxcb.cn/news/detail-658951.html
實現(xiàn)
步驟 1
創(chuàng)建一個接口。
Shape.java
public interface Shape {
void draw();
}
步驟 2
創(chuàng)建實現(xiàn)接口的實體類。
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
創(chuàng)建一個外觀類。
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
執(zhí)行程序,輸出結(jié)果:
Circle::draw()
Rectangle::draw()
Square::draw()
這段代碼展示了外觀模式的實現(xiàn)步驟:
創(chuàng)建一個接口 Shape,其中定義了一個抽象方法 draw(),表示繪制形狀的操作。
創(chuàng)建三個實現(xiàn)類 Rectangle、Square 和 Circle,它們分別實現(xiàn)了 Shape 接口,并實現(xiàn)了 draw() 方法,用于具體繪制各種形狀。
創(chuàng)建一個外觀類 ShapeMaker,該類包含了對上述三個形狀的引用,通過實例化相應的對象來創(chuàng)建這些形狀。外觀類提供了三個公共方法 drawCircle()、drawRectangle() 和 drawSquare(),分別調(diào)用對應形狀的 draw() 方法。
創(chuàng)建一個 FacadePatternDemo 類作為主類,通過實例化 ShapeMaker 對象,并調(diào)用其方法來使用外觀類畫出各種類型的形狀。
最后執(zhí)行程序,輸出結(jié)果依次為 "Circle::draw()"、"Rectangle::draw()" 和 "Square::draw()",表示成功繪制了圓形、矩形和正方形。
這個例子中,外觀模式被用于隱藏創(chuàng)建形狀對象和調(diào)用繪制方法的復雜性??蛻舳酥恍枰ㄟ^外觀類提供的簡單接口調(diào)用方法,而無需了解底層的具體實現(xiàn)。這樣可以簡化客戶端的使用,并且在后續(xù)需要修改具體形狀的實現(xiàn)時,只需要修改外觀類而不影響到客戶端代碼。```
到了這里,關(guān)于設(shè)計模式詳解-外觀模式的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!