- 1、本文档共19页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
设计模式_4_结构型模式(一)
第4章 结构型模式(一)
本章目标
了解什么是门面模式
掌握门面模式的应用
了解什么是组合模式
掌握组合模式的应用
本章单词:
facade________________________ composite_____________________
camera________________________ sensor________________________
alarm_________________________ leaf__________________________
composite_____________________
4.1 门面模式(Facade)
4.1.1 概念
把医院作为一个子系统,按照部门职能,这个系统可以划分为挂号、门诊、划价、化验、收费、取药等。看病的病人要与这些部门打交道,就如同一个子系统的客户端与一个子系统的各个类打交道一样,不是一件容易的事情。
首先病人必须先挂号,然后门诊。如果医生要求化验,病人必须首先划价,然后缴款,才能到化验部门做化验。化验后,再回到门诊室。
解决这种不便的方法便是引进门面模式。可以设置一个接待员的位置,由接待员负责代为挂号、划价、缴费、取药等。这个接待员就是门面模式的体现,病人只接触接待员,由接待员负责与医院的各个部门打交道。
1、名称
门面模式(facade)又称外观模式。为子系统中的一组接口提供一个一致的界面, Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
定义中提到的子系统是指在设计中为了降低复杂性根据一定的规则(比如业务、功能),对系统进行的划分。子系统中封装有一些类。客户程序在使用子系统的时候,可能会像下图一样零乱。
2、结构
门面模式是对象的结构模式。门面模式没有一个一般化的类图描述,图演示了一个门面模式的示意性对象
图4-1 门面模式对象结构
3、意图
外部与一个子系统的通信必须通过一个统一的门面(Facade)对象进行,这就是门面
4、角色
门面(Facade)角色:客户端可以调用这个角色的方法。此角色知晓相关的(一个或者多个)子系统的功能和责任。在正常情况下,本角色会将所有从客户端发来的请求委派到相应的子系统去。
子系统(subsystem)角色:可以同时有一个或者多个子系统。每一个子系统都不是一个单独的类,而是一个类的集合。每一个子系统都可以被客户端直接调用,或者被门面角色调用。子系统并不知道门面的存在,对于子系统而言,门面仅仅是另外一个客户端而已。
门面模式的使用环境:
当你要为一个复杂子系统提供一个简单接口时。在上面已经描述了原因。
客户程序与抽象类的实现部分之间存在着很大的依赖性。引入facade将这个子系统与客户以及其他的子系统分离,可以提高子系统的独立性和可移植性(上面也提到了)。
当你需要构建一个层次结构的子系统时,使用facade模式定义子系统中每层的入口点。如果子系统之间是相互依赖的,你可以让它们仅通过facade进行通讯,从而简化了它们之间的依赖关系。
4.1.3 实现
我们考察一个保安系统的例子,以说明门面模式的功效。一个保安系统由两个录像机、三个电灯、一个遥感器和一个警报器组成。保安系统的操作人员需要经常将这些仪器启动和关闭。
不使用门面模式的设计
首先,在不使用门面模式的情况下,操作这个保安系统的操作员必须直接操作所有的这些部件。图是在不使用门面模式的情况下系统设计。
?
可以看出,Client对象需要引用到所有的录像机(Camera)、电灯(Light)、感应器(Sensor)和警报器(Alarm)对象
Camera类:
package com.sanlian.mode.facade;
/**
* 录像机
* @author sanlian
* @version Nov 27, 2010 9:13:22 AM
*/
public class Camera {
public void turnOn() {
System.out.println(Turning on the camera.);
}
public void turnOff() {
System.out.println(Turning off the camera.);
}
public void rotate(int degrees) {
System.out.println(Rotating the camera by + degrees + degrees.);
}
} Light类:
package com.sanlian.mode.facade;
/**
* 电
您可能关注的文档
- 论巴塞尔协议对商业银行资本管理的意义.doc
- 论我国家庭暴力的现状和对策.doc
- 论我国刑事被害人补偿制度的建构.doc
- 论政府与市场的边界.docx
- 论文,商丘市保护性耕作技术发展研究.doc
- 论文-Hankel变换的数值积分算法及误差分析.doc
- 论文写作方法(机械工程学报杂志).doc
- 论文南海问题.doc
- 论文地理综合题答题能力的培养策略.doc
- 论文0205.doc
- Haier海尔413升风冷变频多门冰箱 BCD-413WGHFD1BSJU1(白)说明书用户手册.pdf
- Siemens西门子工业抽屉式断路器主回路后垂直连接 抽屉式断路器主回路后垂直连接使用手册.pdf
- Samsung三星智能佩戴设备 Galaxy Fit3安全手册.pdf
- Samsung三星滚筒洗衣机 AI神 黑钻热泵洗烘旗舰 WD18DB8995BZSC使用手册.pdf
- Sakura樱花消毒柜 保洁柜消毒柜 SCQ-130D6用户手册说明书.pdf
- Hifiman头领科技ARYA UNVEILED说明书用户手册.pdf
- Siemens西门子工业抽屉式主回路连接前置端子 支撑件 抽屉式主回路连接前置端子 支撑件使用手册.pdf
- Siemens西门子工业中性线的外部电流传感器 中性线的外部电流传感器使用手册.pdf
- Siemens西门子工业电子脱扣单元 电子脱扣单元使用手册.pdf
- Razer雷蛇Playstation 专用雷蛇战锤狂鲨极速版 RZ12-038203 用户指南 (简体中文)说明书用户手册.pdf
最近下载
- 腰椎的解剖及腰部的层次解剖ppt参考课件.ppt
- 知识产权助推新质生产力发展.pptx VIP
- NB∕T 10805-2021 水电工程溃坝洪水与非恒定流计算规范.pdf
- 2022年鄄城县工会系统招聘考试题库及答案解析.docx VIP
- 2024年医师定期考核必考题库及答案.pdf
- 2023年互联网信息审核员理论考试题库(含答案).pdf VIP
- 2024中考语文《西游记》历年真题专练(学生版+解析版).pdf VIP
- 高中音乐鉴赏测试题.doc VIP
- 人教三上数学《数学广角—集合》单元作业设计方案(13页).pdf VIP
- 省级政府和重点城市一体化政务服务能力调查评估报告2021年.pdf VIP
文档评论(0)