设计模式学习笔记--外观模式

本文介绍了软件设计中的外观模式,它通过提供一个统一的接口来隐藏系统的复杂性,使子系统更易于使用。文章详细展示了如何通过Java实现外观模式,并列举了其优缺点及适用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

十一、外观模式

外观模式(Facade Pattern)隐藏系统的复杂性,对外提供统一的接口。该模式涉及一个单一的类,提供了客户端请求的简化方式和委托调用。

简介

外观模式为子系统的一组接口提供统一的用户调用,通过定义一个高层次的接口,使得子系统的对外使用更为方便。
- 优点:减少系统相互依赖、提高灵活性和安全性。
- 缺点:不符合开闭原则、修改和继承都不方便合适。

使用场景,为复杂子系统提供一致的对外接口,比如去工商局办理手续,可能各种窗口、盖章签字和流程,外观模式可以理解为,直接找一个人,给钱,剩下的事就不用操心了。

实现

创建Shape接口和其实现类。定义一个外观类ShapeMaker,使用Shape的实体类来代表调用。
facable
- 创建接口

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();
  }
}
  • 输出
圆形绘制
正方形绘制
矩形绘制
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值