第13章_外观模式_第1页
第13章_外观模式_第2页
第13章_外观模式_第3页
第13章_外观模式_第4页
第13章_外观模式_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论