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

设计模式-结构型模式-外观模式

外观模式(Facade),为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。[DP]

 

首先,定义子系统的各个组件接口和具体实现类:
// 子系统组件接口
public interface SubsystemA {void operationA();
}public interface SubsystemB {void operationB();
}public interface SubsystemC {void operationC();
}// 子系统组件的具体实现
public class ConcreteSubsystemA implements SubsystemA {@Overridepublic void operationA() {System.out.println("Subsystem A operation");}
}public class ConcreteSubsystemB implements SubsystemB {@Overridepublic void operationB() {System.out.println("Subsystem B operation");}
}public class ConcreteSubsystemC implements SubsystemC {@Overridepublic void operationC() {System.out.println("Subsystem C operation");}
}
接下来,创建外观类,它包含了对子系统中各个组件的引用,并提供了简化后的接口:
public class Facade {private SubsystemA subsystemA;private SubsystemB subsystemB;private SubsystemC subsystemC;public Facade() {subsystemA = new ConcreteSubsystemA();subsystemB = new ConcreteSubsystemB();subsystemC = new ConcreteSubsystemC();}// 客户端调用的简单接口public void operation() {subsystemA.operationA();subsystemB.operationB();subsystemC.operationC();}//TODO 客户机调用的接口可以根据不同的情况,对子系统的方法进行组合
}
最后,创建客户端代码来演示如何使用外观类:
public class FacadePatternExample {public static void main(String[] args) {Facade facade = new Facade();// 客户端通过外观类来调用子系统操作facade.operation();}
}

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

相关文章:

  • C++学习第四天(类与对象下)
  • 【AI Agent系列】【MetaGPT多智能体学习】0. 环境准备 - 升级MetaGPT 0.7.2版本及遇到的坑
  • python自动化管理和zabbix监控网络设备(无线AC控制瘦ap配置部分)
  • XSS中级漏洞(靶场)
  • etcd java 客户端jetcd库踩坑日志
  • <网络安全>《61 微课堂<第1课 南北向流量是什么?>》
  • Day12-【Java SE进阶】JDK8新特性:Lambda表达式、方法引用、常见算法、正则表达式、异常
  • go mod中如何解决 xxx/yyy/lib@v1.1.0: unrecognized import path
  • 比较Python和Rust的内存管理机制
  • Linux系统——Shell脚本——一键安装LNMP
  • 算法复习之二分【备战蓝桥杯】
  • 如何做代币分析:以 SHIB 币为例
  • Springboot+vue的考勤管理系统(有报告)。Javaee项目,springboot vue前后端分离项目。
  • https://htmlunit.sourceforge.io/
  • 回文链表(leetcode)
  • 大语言模型(LLM)技术名词表(一)
  • C++ 快速排序快速选择
  • 雅马哈伺服器TS-S系列说明具体详情内容可参看PDF目录内容
  • SpringBoot底层原理
  • 【golang】25、图片操作
  • kswapd0挖矿病毒攻击记录
  • 如何使用 takeUntil RxJS 操作符来声明性地管理订阅
  • 在Centos中用Docker部署oracle-12c
  • JS进阶——高级技巧
  • TG-ADMIN 权限管理系统
  • 十五届蓝桥杯第三期模拟赛题单(C++、java、Python)
  • 嵌入式驱动学习第一周——git的使用
  • 界面控件DevExpress .NET MAUI v23.2新版亮点 - 拥有全新的彩色主题
  • 大语言模型LLM Pro+中Pro+(Prompting)的意义
  • React 中,children 属性