请选择 进入手机版 | 继续访问电脑版
MSIPO技术圈 首页 IT技术 查看内容

Java外观设计模式

2023-07-13

Java外观设计模式

定义

外观模式(Facade Pattern)是一种结构型设计模式,它通过引入一个外观角色来简化客户端与子系统之间的交互,为复杂的子系统调用提供一个统一的入口,降低子系统与客户端的耦合度,且客户端调用非常方便。这种模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。您想了解更多关于外观模式的信息吗?

对应角色

外观模式包含两个角色:Facade(外观角色)SubSystem(子系统角色)。外观角色是客户端可以调用的类,它可以指定相关(一个或者多个)子系统的功能和职责。在正常情况下,它将所有从客户端发来的请求委派到相应的子系统去,传递给相应的子系统对象处理

优缺点

优点

  • 简化客户端代码:简化复杂系统的调用过程,无需对子系统进行深入了解,即可完成调用¹。
  • 降低耦合:使用外观模式,只与外观对象进行交互,不与复杂的子系统直接进行交互,降低了系统间的依赖,使耦合关系更低。子系统内部的模块更容易扩展和维护¹。

缺点

  • 子系统扩展风险:系统内部扩展子系统时,容易产生风险¹。
  • 不符合开闭原则:外观模式扩展子系统时,不符合开闭原则¹。

应用场景

  • 为复杂的模块或子系统提供外界访问的模块³。
  • 子系统相互独立³。
  • 系统结构层次复杂,每个层级都可以使用外观对象作为该层入口,可以简化层次间的调用接口²。

实例

interface Shape {
    void draw();
}

class Rectangle implements Shape {
    @Override
    public void draw() {
        System.out.println("Rectangle::draw()");
    }
}

class Square implements Shape {
    @Override
    public void draw() {
        System.out.println("Square::draw()");
    }
}

class Circle implements Shape {
    @Override
    public void draw() {
        System.out.println("Circle::draw()");
    }
}

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();
    }
}

public class FacadePatternDemo {
   public static void main(String[] args) {
      ShapeMaker shapeMaker = new ShapeMaker();

      shapeMaker.drawCircle();
      shapeMaker.drawRectangle();
      shapeMaker.drawSquare();      
   }
}

相关阅读

热门文章

    手机版|MSIPO技术圈 皖ICP备19022944号-2

    Copyright © 2024, msipo.com

    返回顶部