Java外观设计模式

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

幽·

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值