设计模式.外观模式(Facade).pptx
《设计模式.外观模式(Facade).pptx》由会员分享,可在线阅读,更多相关《设计模式.外观模式(Facade).pptx(33页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、LOGO设计模式设计模式(Design Pattern)张凯 副教授计算机学院 软件工程系武汉科技大学问题问题(Problem)(Problem)v给银行做个贷款系统当客户来进行抵押贷款时,有如下几件事情需要确认:1、到银行子系统查询他是否有足够多的存款2、到信用子系统查询他是否有良好的信用3、到贷款子系统查询他有无贷款劣迹只有这三个子系统都通过时才可进行抵押。武汉科技大学问题问题(Problem)(Problem)武汉科技大学问题问题(Problem)(Problem)/顾客类publicclassCustomerprivatestring_name;publicCustomer(strin
2、gname)this._name=name;publicstringNamegetreturn_name;武汉科技大学问题问题(Problem)(Problem)publicclassBank/银行子系统publicboolHasSufficientSavings(Customerc,intamount)Console.WriteLine(查询银行信息,客户名+c.Name);returntrue;publicclassCredit/信用子系统publicboolHasGoodCredit(Customerc)Console.WriteLine(查询信用信息,客户名+c.Name);retur
3、ntrue;publicclassLoan/贷款子系统publicboolHasNoBadLoans(Customerc)Console.WriteLine(查询贷款信息,客户名+c.Name);returntrue;武汉科技大学问题问题(Problem)(Problem)staticvoidMain(stringargs)Bankbank=newBank();Loanloan=newLoan();Creditcredit=newCredit();int Money=12000;Customercustomer=newCustomer(张三);booleligible=true;if(!ban
4、k.HasSufficientSavings(customer,Money)eligible=false;elseif(!loan.HasNoBadLoans(customer)eligible=false;elseif(!credit.HasGoodCredit(customer)eligible=false;Console.WriteLine(客户+customer.Name+已经被+(eligible?通过:拒绝);Console.ReadLine();可以看到,客户程序与三个子系统都发生了耦合,这种耦合使得客户程序依赖于子系统,当子系统化时,客户程序也将面临很多变化的挑战。武汉科技大学
5、主要内容主要内容模式动机与定义1模式结构与分析2模式实例与解析3模式效果与应用4武汉科技大学外观模式外观模式(Facade)(Facade)v模式动机模式名称:外观模式(Facade)将一个系统划分为若干个子系统有利于降低系统的复杂性,一个常见的设计目标是使子系统间的通信和相互依赖关系达到最小,而达到该目标的途径之一就是引入一个外观对象,它为子系统中较一般的设置提供了一个单一而简单的界面。武汉科技大学外观模式外观模式(Facade)(Facade)v模式动机外观模式要求一个子系统的外部与其内部的通信必须通过一个统一的外观(Facade)对象进行。就如同医院的接待员一样,外观模式的外观类将客户端
6、与子系统的内部复杂性分隔开,使得客户端只需要与外观对象打交道,而不需要与子系统内部的很多对象打交道。武汉科技大学外观模式外观模式(Facade)(Facade)v模式动机在没有外观类(Facade)之前,客户类(Client)需要和子系统类(Subsystem)进行复杂的交互,系统的耦合度很大;而增加一个外观类之后,客户类只需要直接和外观类交互,子系统类之间的复杂关系由外观类来实现,从而降低了系统的耦合度。武汉科技大学外观模式外观模式(Facade)(Facade)v模式定义外观模式(Facade):外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,
7、外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。外观模式是对象的结构模式。武汉科技大学外观模式外观模式(Facade)(Facade)一个合理的设计就是为这些子系统创建一个统一的接口,这个接口将简化客户程序的判断操作。引入Facade模式后的类结构图武汉科技大学外观模式外观模式(Facade)(Facade)publicclassMortgage/外观类privateBankbank=newBank();privateLoanloan=newLoan();privateCreditcredit=newCredit();publicboolIsEligible(Customerc
8、ust,intamount)Console.WriteLine(0申请1:C贷款,cust.Name,amount);booleligible=true;if(!bank.HasSufficientSavings(cust,amount)eligible=false;elseif(!loan.HasNoBadLoans(cust)eligible=false;elseif(!credit.HasGoodCredit(cust)eligible=false;returneligible;武汉科技大学外观模式外观模式(Facade)(Facade)staticvoidMain(stringargs
9、)Mortgagemortgage=newMortgage();/外观Customercustomer=newCustomer(张三);booleligable=mortgage.IsEligible(customer,125000);Console.WriteLine(客户+customer.Name+已经被+(eligable?通过:拒绝);Console.ReadLine();引入Faade模式后,客户程序只与Mortgage发生依赖,也就是Mortgage屏蔽了子系统之间的复杂的操作,达到了解耦内部子系统与客户程序之间的依赖。武汉科技大学外观模式外观模式(Facade)(Facade)
10、staticvoidMain(stringargs)Bankbank=newBank();Loanloan=newLoan();Creditcredit=newCredit();int Money=12000;Customercustomer=newCustomer(张三);booleligible=true;if(!bank.HasSufficientSavings(customer,Money)eligible=false;elseif(!loan.HasNoBadLoans(customer)eligible=false;elseif(!credit.HasGoodCredit(cust
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 设计 模式 外观 Facade
限制150内