当前位置: 首页 > news >正文

结构型模式-外观模式

隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。

这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用。

意图:为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。

主要解决:降低访问复杂系统的内部子系统时的复杂度,简化客户端之间的接口。

何时使用: 1、客户端不需要知道系统内部的复杂联系,整个系统只需提供一个"接待员"即可。 2、定义系统的入口。

如何解决:客户端不与系统耦合,外观类与系统耦合。

关键代码:在客户端和复杂系统之间再加一层,这一层将调用顺序、依赖关系等处理好。

应用实例: 1、去医院看病,可能要去挂号、门诊、划价、取药,让患者或患者家属觉得很复杂,如果有提供接待人员,只让接待人员来处理,就很方便。 2、JAVA 的三层开发模式。

优点: 1、减少系统相互依赖。 2、提高灵活性。 3、提高了安全性。

缺点:不符合开闭原则,如果要改东西很麻烦,继承重写都不合适。

使用场景: 1、为复杂的模块或子系统提供外界访问的模块。 2、子系统相对独立。 3、预防低水平人员带来的风险。

注意事项:在层次化结构中,可以使用外观模式定义系统中每一层的入口。

public interface Shape {void draw();
}public class Circle implements Shape{@Overridepublic void draw() {System.out.println("this is Circle.draw");}
}public class Rectangle implements Shape{@Overridepublic void draw() {System.out.println("this is Rectangle.draw");}
}public class Square implements Shape{@Overridepublic void draw() {System.out.println("this is Square.draw");}
}
public 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();}
}
    @Testpublic void test7(){ShapeMaker shapeMaker = new ShapeMaker();shapeMaker.drawCircle();shapeMaker.drawRectangle();shapeMaker.drawSquare();}
/*
this is Circle.draw
this is Rectangle.draw
this is Square.draw
*/

http://www.lryc.cn/news/164944.html

相关文章:

  • vue三个点…运算符时报错 Syntax Error: Unexpected token
  • C# wpf 实现桌面放大镜
  • Mybatis中的#{}和${}的区别
  • 选择(使用)数据库
  • GFS分布式文件系统
  • 虚函数、纯虚函数、多态
  • QGIS学习3 - 安装与管理插件
  • LeetCode377. 组合总和 Ⅳ
  • QT将数据写入文件,日志记录
  • vue2与vue3的使用区别与组件通信
  • 亚信科技与中国信通院达成全方位、跨领域战略合作
  • 华为Linux系统开发工程师面试
  • Qt利用QTime实现sleep效果分时调用串口下发报文解决串口下发给下位机后产生的粘包问题
  • 人工智能:神经细胞模型到神经网络模型
  • Redisson分布式锁实战
  • JavaScript中循环遍历数组、跳出循环和继续循环
  • Java——》Synchronized和Lock区别
  • JDK20 + SpringBoot 3.1.0 + JdbcTemplate 使用
  • CTFhub_SSRF靶场教程
  • 【华为OD机试】单词接龙【2023 B卷|100分】
  • 如何优雅的实现无侵入性参数校验之spring-boot-starter-validation
  • 企业架构LNMP学习笔记27
  • 品牌策划经理工作内容|工作职责|品牌策划经理做什么?
  • 【设计模式】三、概述分类+单例模式
  • 手把手教学 Springboot+ftp+下载图片
  • LaaS LLM as a service
  • 数据结构与算法(一)数组的相关概念和底层java实现
  • 歌曲推荐《最佳损友》
  • 多元共进|科技促进艺术发展,助力文化传承
  • Java集合(Collection、Iterator、Map、Collections)概述——Java第十三讲