下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1/1外观模式设计系列教程
1.概述
为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
2.模式中的角色
外观类(Facade):外观类知道哪些子系统类负责处理请求,将客户的请求代理给恰当的子系统对象。
子系统类集合(SubSystemClasses):子系统类集合实现了子系统的功能,处理外观类对象指派的任务。
3.模式解读
外观模式的类图
外观模式的代码实现
///
///子系统中的一个类///
publicclassSubSystemOne{publicvoidMethodeOne(){("SubSystemfirstmethod.");}}///
///子系统中一个类///
publicclassSubSystemTwo{publicvoidMethodTwo(){("SubSystemsecondmethod.");}}///
///子系统中一个类///
publicclassSubSystemThree{publicvoidMethodThree(){("SubSystemthirdmethod.");}}///
///子系统中一个类///
publicclassSubSystemFour{publicvoidMethodFour(){("SubSystemfourthmethod.");}}///
///外观类///
publicclassFacade{privateSubSystemOneone;privateSubSystemTwotwo;privateSubSystemThreethree;privateSubSystemFourfour;publicFacade(){one=newSubSystemOne();two=newSubSystemTwo();three=newSubSystemThree();four=newSubSystemFour();}publicvoidMethodA(){("nMethodgroupA");();();();}publicvoidMethodB(){("nMethodgroupB");();();}}
客户端代码
classProgram{staticvoidMain(stringargs){//由于Facade的作用,客户端可以根本不知道子系统类的存在Facadefacade=newFacade();();();();}}
运行结果
4.模式总结
优点
Facade模式降低了客户端对子系统使用的复杂性。
外观模式松散了客户端与子系统的耦合关系,让子系统内部的模块能更容易扩展和维护。
通过合理使用Facade,可以帮助我们更好的划分访问的层次。
缺点
过多的'或者是不太合理的Facade也容易让人迷惑,到底是调用Facade好呢,还是直接调用模块好。
适用场景
需要将设计进行分层时考虑Facade模式。
在开发阶段,子系统往往因为重构变得越来越复杂,增加外观模式可以提供一个简单的接口,减少它们之间的依赖。
在维护一个遗留的大型系统时,可以这个系统已经非常难以维护和扩展,可以为新系统开发一个Facade类,来提供设计粗糙或高度复杂的遗留代码的比较清晰简单的接口,让新系统与Facade对象交互,Facade与遗留代码交互所有复杂的工作。
5.应用举例:分层开发中,对数据访问层我们增加DataAccess作为对外的接口来操作数据库子系统。
实现类图
实现代码
publicclassEmployee{publicstringName{get;set;}publicintAge{get;set;}publicSalarySalary{get;set;}}publicclassSalary{publicDateTimeFrom{get;set;}publicDateTimeTo{get;set;}publicdecimalAmount{get;set;}}publicclassEmployeeDataAccess{publicvoidSaveEmployee(Employeeemployee){("Saveemployeetodatabase.");}publicvoidDeleteEmployee(Employeeemployee){("Remodeemployeefromdatabase.");}}publicclassSalaryDataAccess{publicvoidSaveSalary(Salarysalary){("Savesalarytodatabase.");}publicvoidDeleteSalary(Salarysalary){("Removesalaryfromdatabase.");}}///
///DataAccess为客户端提供一个简单的接口///
publicclassDataAccess{privateEmployeeDataAccessemployeeDataAccess=newEmployeeDataAccess();privateSalaryDataAccesssalaryDataAccess=newSalaryDataAccess();publicvoidSaveEmployee(Employeeemployee){//先保存员工基本信息(employee);//保存员工薪水信息();}publicvoidRemoveEmployee(Employeeemployee){//先删除员工薪水信息();//删除员工基本信息(employee);}}
客户端代码
classProgram{staticvoidMain(stringargs){dataAccess=new();
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度股权代持与业绩对赌条款合同4篇
- 二零二五年度高端商务面包车租赁服务协议3篇
- 二零二五版高档住宅门窗安装与智能家居集成协议2篇
- 二零二五年度数字货币交易合作协议3篇
- 2025年度农家乐民宿房屋租赁与乡村旅游产品开发合作协议3篇
- 二零二五年度模具材料采购与加工一体化合同4篇
- 二零二五年度铝型材门窗加工与国际贸易合作协议3篇
- 2025年度出租房卫生服务质量评估与租户满意度合同4篇
- 2025年度门卫工程电气系统安装合同4篇
- 2025年防爆电磁线圈行业深度研究分析报告
- 疥疮病人的护理
- 人工智能算法与实践-第16章 LSTM神经网络
- 17个岗位安全操作规程手册
- 2025年山东省济南市第一中学高三下学期期末统一考试物理试题含解析
- 中学安全办2024-2025学年工作计划
- 网络安全保障服务方案(网络安全运维、重保服务)
- 2024年乡村振兴(产业、文化、生态)等实施战略知识考试题库与答案
- 现代科学技术概论智慧树知到期末考试答案章节答案2024年成都师范学院
- 软件模块化设计与开发标准与规范
- 2024年辽宁铁道职业技术学院高职单招(英语/数学/语文)笔试历年参考题库含答案解析
- 有机农业种植模式
评论
0/150
提交评论