- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
7结构型设计模式吴粉侠
结构型设计模式 Process Phases Discussed in This Chapter 结构型设计的目标 结构化设计模式的设计目的就是表示复杂的对象,如组织图、映射、分子和事务,同时通过一定的方式利用这些聚合的对象来获得某种功能 外观模式 为系统中的一组接口提供一个一致的界面,Fa?ade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 大的系统一般都由多个子系统构成,每个子系统包含多个类,这些类协同合作为用户提供所需要的功能。一个客户程序中的某个类的实例如果直接和子系统的多个类的实例打交道完成某项任务,就使客户程序中的类和子系统类有过多的依赖关系。 比如,邮政系统负责邮寄包裹的子系统就包含Check、Weight和Transport类。Check类的实例负责对包裹进行安全检查,Weight类的实例负责根据包裹的重量计算邮资,Transport类的实例负责为包裹选择运输工具。 邮寄包裹的用户如果直接和负责邮寄包裹的子系统的类打交道,就必须首先让Check类的实例对包裹进行安全检查,然后再让Weight类的实例为包裹计算邮资,最后让Transport类实例为包裹选择一个运输工具,这就使用户非常不方便。 外观模式是简化用户和子系统进行交互的成熟模式,外观模式的关键是为子系统提供一个称作外观的类,该外观类的实例负责和子系统中类的实例打交道。当用户想要和子系统中的若干个类的实例打交道时,可以代替地和子系统的外观类的实例打交道。 外观模式的类图 结构的描述 以下通过一个简单的子系统讲述外观模式中所涉及的各个角色 报社的广告子系统有三个类CheckWord,Charge和TypeSeting类,各个类的职责如下: Checkword的实例负责检查广告内容含有的字符个数; Charge类的实例负责计算费用; TypeSeting的实例负责对广告进行排版 如:String content=“鹿花牌洗衣机,价格2356元,联系电话:1234567”; 1.子系统 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; } } 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+元); } } public class TypeSetting { String advertisement; public TypeSetting(String advertisement){ this.advertisement=advertisement; } public void typeSeting(){ System.out.println(广告排版格式:); System.out.println(*********); System.out.println(advertisement); System.out.println(*********); } } 外观 public class ClientServerFacade { private CheckWord checkWord; private Charge charge; private TypeSetting typeSeting; String advertisement; public ClientServerFacade(String advertisement){ this.advertisement=adverti
文档评论(0)