类型:结构型模式
实现原理:定义了一个高层接口,向现有的系统中的一组接口提供一致的界面
目的:降低访问复杂系统的内部子系统时的复杂度,简化客户端之间的接口,使系统更加容易使用
何时使用:简化复杂系统,方便操作
解决方法:对客户端和系统解耦,让外观类与系统耦合
关键代码:在客户端和复杂系统之间再加一层,这一层将调用顺序、依赖关系等处理好。
应用实例:电脑操作系统
优点: 1、解耦 2、灵活 3、安全
缺点:不符合开闭原则,改东西麻烦,继承重写困难。文章来源:https://www.toymoban.com/news/detail-658951.html
使用场景:为复杂的模块或子系统提供外界访问的模块文章来源地址https://www.toymoban.com/news/detail-658951.html
实现
步骤 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()
这段代码展示了外观模式的实现步骤:
创建一个接口 Shape,其中定义了一个抽象方法 draw(),表示绘制形状的操作。
创建三个实现类 Rectangle、Square 和 Circle,它们分别实现了 Shape 接口,并实现了 draw() 方法,用于具体绘制各种形状。
创建一个外观类 ShapeMaker,该类包含了对上述三个形状的引用,通过实例化相应的对象来创建这些形状。外观类提供了三个公共方法 drawCircle()、drawRectangle() 和 drawSquare(),分别调用对应形状的 draw() 方法。
创建一个 FacadePatternDemo 类作为主类,通过实例化 ShapeMaker 对象,并调用其方法来使用外观类画出各种类型的形状。
最后执行程序,输出结果依次为 "Circle::draw()"、"Rectangle::draw()" 和 "Square::draw()",表示成功绘制了圆形、矩形和正方形。
这个例子中,外观模式被用于隐藏创建形状对象和调用绘制方法的复杂性。客户端只需要通过外观类提供的简单接口调用方法,而无需了解底层的具体实现。这样可以简化客户端的使用,并且在后续需要修改具体形状的实现时,只需要修改外观类而不影响到客户端代码。```
到了这里,关于设计模式详解-外观模式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!