十一、外观模式
外观模式(Facade Pattern)隐藏系统的复杂性,对外提供统一的接口。该模式涉及一个单一的类,提供了客户端请求的简化方式和委托调用。
简介
外观模式为子系统的一组接口提供统一的用户调用,通过定义一个高层次的接口,使得子系统的对外使用更为方便。
- 优点:减少系统相互依赖、提高灵活性和安全性。
- 缺点:不符合开闭原则、修改和继承都不方便合适。
使用场景,为复杂子系统提供一致的对外接口,比如去工商局办理手续,可能各种窗口、盖章签字和流程,外观模式可以理解为,直接找一个人,给钱,剩下的事就不用操心了。
实现
创建Shape
接口和其实现类。定义一个外观类ShapeMaker
,使用Shape的实体类来代表调用。
- 创建接口
Shape.java
public interface Shape {
void draw();
}
- 实现接口
Rectangle.java
public class Rectangle implements Shape {
@override
public void draw(){
System.out.println("矩形绘制");
}
}
Square.java
public class Square implements Shape{
@override
public void draw(){
System.out.println("正方形绘制");
}
}
Circle.java
public class Circle implements Shape {
@override
public void draw(){
System.out.println("圆形绘制");
}
}
- 创建外观类
ShapeMaker.java
public class ShapeMaker {
private Shape circle;
private Shape square;
private Shape rect;
public ShapeMaker(){
circle = new Circle();
square = new Square();
rect = new Rectangle();
}
public void drawCircle(){
circle.draw();
}
public void drawRect(){
rect.draw();
}
public void drawSquare(){
square.draw();
}
}
- 演示
FacablePatternDemo.java
public class FacablePatternDemo {
public static void main(String[] args){
ShapeMaker maker = new ShapeMaker();
maker.drawCircle();
maker.drawSquare();
maker.drawRect();
}
}
- 输出
圆形绘制
正方形绘制
矩形绘制