




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Copyright 2008 TietoEnator Corporation模式设计(JAVA)商学院商学院 信管专业教研室信管专业教研室韩韩 娜娜电话电话: 661905办公室办公室: HG406Copyright 2008 TietoEnator CorporationCopyright 2008 TietoEnator Corporation外观模式外观模式 2022-5-114外观模式为系统中的一组接口提供一个一致的界面,Faade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。Chain of Responsibility Pattern Provide a unifie
2、d interface to a set of interfaces in a subsystem.Facade defines a higher-level interface that makes the subsystem easier to use.一一 、 概述概述 2022-5-115 外观模式是简化用户和子系统进行交互的成熟模式,外观模式的关键是为子系统提供一个称作外观的类,该外观类的实例负责和子系统中类的实例打交道。当用户想要和子系统中的若干个类的实例打交道时,可以代替地和子系统的外观类的实例打交道。 一一 、 何时使用何时使用 分三个阶段来说:首先,设计初期阶段,应该有意识的
3、将不同的两个层分离,如MVC架构,层与层之间建立外观层与层之间建立外观Faade, 这样可以为复杂这样可以为复杂的子系统提供一个简单的接口的子系统提供一个简单的接口。其次,在开发阶段,子系统往往因不断的重构深化而变得越来越复杂,大多数的模式 使用时也会产生很很小的类,这本是好事,但也给外部调用它们的用户程序带来了使用上的困难,增加外观增加外观Faade可以提供一个简单的接口减少它们之前的依赖。可以提供一个简单的接口减少它们之前的依赖。第三,在维护一个遗留的大型系统时,可能这个系统已经难以维护和扩展了,但其包含重要功能。可以为新系统开发一可以为新系统开发一个外观个外观Faade类来提供设计粗糙或
4、高度复杂的遗留代码的比较类来提供设计粗糙或高度复杂的遗留代码的比较清晰简单的接口,让新系统与清晰简单的接口,让新系统与Faade对象交互,对象交互,Faade与遗留与遗留代码交互所有复杂的工作代码交互所有复杂的工作。一一 、 应用实例应用实例 2022-5-117 邮政系统负责邮寄包裹的子系统包含Check、Weight和Transport类。Check类的实例负责对包裹进行安全检查,Weight类的实例负责根据包裹的重量计算邮资,Transport类的实例负责为包裹选择运输工具。一个要邮寄的包裹的用户如果直接和负责邮寄包裹的子系统的类打交道就会非常不方便。 三三 、 应用实例应用实例 202
5、2-5-118 报社的广告系统有三个类CheckWord、Charge和TypeSetting类,各个类的职责如下:CheckWord类负责检查广告内容含有的字符数量;Charge类的实例负责计算费用;TypeSetting的实例负责对广告进行排版。使用外观模式简化用户和上述子系统所进行的交互。二、二、外观模式的结构与使用外观模式的结构与使用 2022-5-119模式的结构中包括两种角色: 子系统(Subsystem) 外观(Facade) 2022-5-1110模式的UML类图 2022-5-1111模式的结构的描述与使用 1子系统(Subsystem)_1 : CheckWord.java
6、 public class CheckWord public final int basicAmount=85; String advertisement; int amount; public CheckWord(String advertisement) this.advertisement=advertisement; public void setChargeAmount() amount=advertisement.length()+basicAmount; /计算出计费字符数目 public int getAmount() return amount; 2022-5-1112模式的
7、结构的描述与使用 1子系统(Subsystem)_2 : Charge.java public class Charge public final int basicCharge=12; CheckWord checkWord; Charge(CheckWord checkWord) this.checkWord=checkWord; public void giveCharge() int charge=checkWord.getAmount()*basicCharge; System.out.println(广告费用:+charge+元); 2022-5-1113模式的结构的描述与使用 1
8、子系统(Subsystem)_3 :TypeSeting.java public class TypeSeting String advertisement; public TypeSeting(String advertisement) this.advertisement=advertisement; public void typeSeting() System.out.println(广告排版格式:); System.out.println(*); System.out.println(advertisement); System.out.println(*); 2022-5-1114
9、模式的结构的描述与使用 2外观(Facade): ClientServerFacade.java public class ClientServerFacade private CheckWord checkWord; private Charge charge; private TypeSeting typeSeting; String advertisement; public ClientServerFacade(String advertisement) this.advertisement=advertisement; checkWord=new CheckWord(advertis
10、ement); charge=new Charge(checkWord); typeSeting=new TypeSeting(advertisement); public void doAdvertisement() checkWord.setChargeAmount(); charge.giveCharge(); typeSeting.typeSeting(); 2022-5-1115模式的结构的描述与使用 3应用 Application.java public class Application public static void main(String args) ClientSer
11、verFacade clientFacade; String clientAdvertisement=鹿花牌洗衣机,价格2356元,联系电话:1234567; clientFacade=new ClientServerFacade(clientAdvertisement); clientFacade.doAdvertisement(); 三、三、外观模式的优点外观模式的优点 2022-5-1116使客户和子系统中的类无耦合。外观只是提供了一个更加简洁的界面,并不影响用户直接使用子系统中的类。子系统中任何类对其方法的内容进行修改,不影响外观的代码。三、三、一个实例一个实例 2022-5-1117设计一个子系统,该子系统
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 初级中学生源稳定计划
- 小学数学奥数思维训练 数论专项:带余除法(含解析)
- 教科版六年级科学信息技术应用计划
- 婚礼布场拆卸流程
- 2024-2025年苏教版小学数学四年级上册校本教学计划
- 小学2025年春季学期学生行为教育计划
- 三年级下册数学个性化教学计划
- 工程监理单位竣工报告范文
- 私人诊所产科急救流程
- 以建构与应用为翼:小学高段数学模型教学实践探索
- 2025年医师三基考试题及答案
- 中远海运招聘笔试题库2025
- 2025至2030中国纳米二氧化硅市场消费前景与投资价值综合分析报告
- 温州市2024-2025学年高一下学期6月期末-英语试卷及答案
- 导管室护理管理制度
- 专利代理所管理制度
- 律师所案件管理制度
- 玄隐遗密(含黄帝内经)
- 2025年毕节市大方富民村镇银行招聘题库带答案分析
- 深静脉血栓的试题及答案
- 【MOOC】园林植物应用设计-北京林业大学 中国大学慕课MOOC答案
评论
0/150
提交评论