第13章外观模式

上传人:今*** 文档编号:107225561 上传时间:2019-10-18 格式:PPT 页数:44 大小:626KB
返回 下载 相关 举报
第13章外观模式_第1页
第1页 / 共44页
第13章外观模式_第2页
第2页 / 共44页
第13章外观模式_第3页
第3页 / 共44页
第13章外观模式_第4页
第4页 / 共44页
第13章外观模式_第5页
第5页 / 共44页
点击查看更多>>
资源描述

《第13章外观模式》由会员分享,可在线阅读,更多相关《第13章外观模式(44页珍藏版)》请在金锄头文库上搜索。

1、第13章 外观/门面模式(Facade),生活中的例子,组装电脑,通常会有两种方案。 一个方案是去电子市场把自己需要的配件都买回来,然后自己组装 另一个方案,就是到电子市场,找一家专业装机的公司,把具体的要求一讲,然后就等着拿电脑就好了,外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 外观模式又称为门面模式,什么是外观模式,界面:指从一个组件外部来看这个组件,能够看到什么,这就是这个组件的界面,也就是所说的外观。GUI? 比如:从一个类外部来看这个类,那么这个类的public方法就是

2、这个类的外观 接口:指外部和内部交互的一个通道,通常是指一些方法。可以是类的方法,也可以是interface的方法,两个概念,引入外观角色之后,用户只需要直接与外观角色交互,用户与子系统之间的复杂关系由外观角色来实现,从而降低了系统的耦合度。,外观模式动机,外观模式UML类图,外观模式,外观模式包含如下角色: Facade: 外观角色 SubSystem:子系统角色,典型代码,举例,一个保安系统由两个录像机,三个电灯、一个遥感器和一个警报器组成。 操作人员要经常启动和关闭这些仪器。,不使用外观模式的设计 操作这个保安系统的操作员必须直接操作所有的这些部件。,public class Camer

3、a 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 0 degrees.“, degrees); ,public class Light public void TurnOff() System.out.println(“Tu

4、rning on the light.“); public void TurnOn() System.out.println(“Turning off the light.“); public void ChangeBulb() System.out.println(“changing the light-bulb.“); ,public class Sensor public void Activate() System.out.println(“Activating the sensor.“); public void Deactivate() System.out.println(“De

5、activating the sensor.“); public void Trigger() System.out.println(“The sensor has triggered.“); ,public class Alarm public void Activate() System.out.println(“Activating the alarm.“); public void Deactivate() System.out.println(“Deactivating the alarm.“); public void Ring() System.out.println(“Ring

6、ing the alarm.“); public void StopRing() System.out.println(“Stop the alarm.“); ,public class Client private static Camera camera1, camera2; private static Light light1, light2, light3; private static Sensor sensor; private static Alarm alarm; static camera1 = new Camera(); camera2 = new Camera(); l

7、ight1 = new Light(); light2 = new Light(); light3 = new Light(); sensor = new Sensor(); alarm = new Alarm(); public static void main( String args ) camera1.TurnOn(); camera2.TurnOn(); light1.TurnOn(); light2.TurnOn(); light3.TurnOn(); sensor.Activate(); alarm.Activate(); ,使用外观模式的设计,public class Secu

8、rityFacade private static Camera camera1, camera2; private static Light light1, light2, light3; private static Sensor sensor; private static Alarm alarm; public SecurityFacade() camera1 = new Camera(); camera2 = new Camera(); light1= new Light(); light2= new Light(); light3 =new Light(); sensor = ne

9、w Sensor(); alarm = new Alarm(); public void Activate() camera1.TurnOn(); camera2.TurnOn(); light1.TurnOn(); light2.TurnOn(); light3.TurnOn(); sensor.Activate(); alarm.Activate(); public void Deactivate() camera1.TurnOff(); camera2.TurnOff(); light1.TurnOff(); light2.TurnOff(); light3.TurnOff(); sen

10、sor.Deactivate(); alarm.Deactivate(); ,public class Client private static SecurityFacade security; public static void main( String args ) security = new SecurityFacade(); security.Activate(); Console.WriteLine(“n-n“); security.Deactivate(); ,举例,假设有一个抵押系统,存在三个子系统: 银行子系统(查询是否有足够多的存款)、信用子系统(查询是否有良好的信用)

11、以及贷款子系统(查询有无贷款劣迹),只有这三个子系统都通过时才可进行抵押 当客户申请抵押贷款时,他需要分别去这三个子系统办理相关手续,此时若使用外观模式为三个子系统中的接口提供一个统一的服务,这时,客户再办理手续就只需要去一个地方了,应用举例,外观模式在Java中的应用,JDBC屏蔽了与数据库进行连接、查询、更新、删除等一系列操作,因此它就属于外观模式的应用。 Hibernate可以算是一种外观模式。 javax.faces.webapp.FacesServlet,J2EE核心模式 Session Facade(Session外观),Session外观模式,它建议在多层分布式的应用中,在逻辑业

12、务处理层增加一种起着外观(facade)作用会话Bean,表示层 组件通过该会话Bean与其它业务逻辑处理组件(SessionBean,EntityBean,DAO等)交互。,J2EE核心模式 Session Facade(Session外观),Session Facade模式结构图,J2EE核心模式 Session Facade(Session外观),Client:可以是一般的Java Object,或者是Business Delegate或其它的SessionBean等 Session Faade:是一个SessionBean,它负责管理多个BusinessObject,为客户端提供更高级

13、别的访问界面。Client通过 SessionFacade完成业务逻辑处理。 Business Object:业务逻辑处理组件,Sample Code,Data Access Layer vs. Business Layer Data access subclasses defines how to access databases and meta data. Business logic classes knows how to use data. Faade Data object Common authentication interface XML standardized data

14、 structure Simple interface to access data,Database SQL Server,Data Access Subclasses,Facade Data Object ,Business Logic ,Database Access,Client Web Page ,Sample Code,. private void GetData(int productID) VirtualObjectModel.Framework.Login login = new VirtualObjectModel.Framework.Login( System.Confi

15、guration.ConfigurationSettings.AppSettings“LoginID“, System.Configuration.ConfigurationSettings.AppSettings“Password“, System.Configuration.ConfigurationSettings.AppSettings“Database“, System.Configuration.ConfigurationSettings.AppSettings“DatabaseServer“); VOM.ObjectModel.Northwind.Products obj = new VOM.ObjectModel.Northwind.Products(login.ConnectionString); obj.GetData(productID); SetData(obj); .,Client ASP.NET page,Sample Code,Serializable() public class Products . public virtual void GetData(int productID)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号