设计模式-外观模式

外观模式

外观模式提供了一个统一的接口,用来访问子系统中的一群接口,外观定义了一个高层接口,让子系统更容易使用。

主要解决:降低访问复杂系统的内部子系统时的复杂度,简化客户端之间的接口
所属类型:结构型模式
如何解决:客户端不与系统耦合,外观类与系统耦合
关键代码:在客户端和系统之间再加一层,这一层对处理顺序,依赖关系等处理好
优点:1、减少系统相互依赖;2、提高灵活性;3、提高了安全性
缺点:不符合开闭原则,如果要改东西就会十分麻烦,继承重写都不合适。

接下来进行一个例子的创建。主要工作是进行图形的绘制工作。
首先创建一个Shape接口,让所有的形状都来实现其方法。

public interface Shape {
    void draw();
}

分别创建Circle,SquareRectangle类并且实现对应的draw()方法。

public class Circle implements Shape{
    @Override
    public void draw() {
        System.out.println("Draw a circle.");
    }
}
public class Square implements Shape{
    @Override
    public void draw() {
        System.out.println("Draw a square.");
    }
}
public class Rectangle implements Shape{
    @Override
    public void draw() {
        System.out.println("Draw a rectangle.");
    }
}

创建一个ShapeMaker类来对具体的绘制工作进行管理,相当于在画具体的图形进行画图操作之间加了一层用于处理对应的事情,其中还可以添加其他复杂的操作。

public class ShapeMaker {
    private Circle circle;
    private Rectangle rectangle;
    private Square 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();
    }
}

通过ShapeMaker来进行相应的操作。

public class FacadeDemo {
    public static void main(String[] args) {
        ShapeMaker shapeMaker = new ShapeMaker();
        shapeMaker.drawRectangle();
        shapeMaker.drawCircle();
        shapeMaker.drawSquare();
    }
}

运行结果如下所示:

Draw a rectangle.
Draw a circle.
Draw a square.

Tips

简单进行一次总结,外观模式将客户从一个复杂的系统中进行解耦,其实现的主要方法还是在客户端和系统之间添加一步操作,来根据对应的功能进行不同的处理。外观模式也实现了让外观更加简单的效果

posted @   忠肝义胆-多隆  阅读(17)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
点击右上角即可分享
微信分享提示