您好,欢迎访问三七文档
TheFacadePattern门面模式子系统及其的客户端通常,设计师在处理复杂系统时的一个常用方法是“分而治之”,但这样做的结果是一个系统或子系统中会有很多的类。使用这个子系统的客户端虽然只关注某些特定的功能,但却需要跟子系统内部的许多对象打交道才能达到目的。这使得客户端的逻辑变得不必要的复杂,维护成本提高、复用率降低。现实生活中的例子---医院挂号、门诊、划价、化验、收费、取药等是这个子系统的中的各个类。用户看一个病需要与这些“类”打交道,非常不容易。解决办法设立接待员,由接待员代办挂号、划价、缴费、取药等。病人只接触接待员。什么是门面模式门面模式为子系统提供一个统一的高层接口,供外部客户使用。门面模式提供了一个更高层次的接口,使得子系统更容易使用。门面模式的结构FacadeClient2Client1Client3subsystem门面模式的实现定义一个(或多个)具备所需接口的新类(门面类)新类(门面类)使用原有的系统。客户使用门面类对象与原系统打交道。门面模式的变体典型的门面模式强调不应该引入新的功能。门面模式的变体可以适当引入新的功能,补充系统的原有功能。什么时候使用门面模式客户只需要使用某个复杂系统的子集,或者需要以一种特殊的方式与系统交互时,使用门面模式。当需要跟踪系统的使用情况时,使用门面模式。因为所有对系统的访问都通过Facade,所以可以很容易的监视系统的使用。希望封装或者隐藏原系统时。编写新类的成本小于所有人学会使用或维护原系统所需的成本时。迪米特法则“只与你直接的朋友们通信。”迪米特法则要求一个对象的相互作用是短程的。朋友的数目越少越好。其实质是减少耦合度。门面模式符合迪米特法则讨论在什么情况下应该编写一个新系统而不是用Facade封装老系统?一个例子---保安系统一个保安系统由两个录像机、三个电灯、一个遥感器和一个报警器组成。保安系统的操作人员经常要将这些仪器启动和关闭。一个例子---保安系统不使用门面模式的情况下,操作员必须直接操作所有仪器。使用门面模式的保安系统准备一个系统的控制台,作为保安系统的用户界面(门面)操作员通过操作这个简化的界面就可以控制所有的仪器。请同学分小组设计方案,写出java源代码。课内练习家庭影院中有CD机,DVD机,收音机Turner,录影机Recorder,功放Amplifier,升降屏幕Screen等,请为家庭影院系统设计一个请设计一个门面,通过它可以方便的操作其他设备放电影等。编写一个测试主类,测试你的程序。实战演练JDBC访问数据库需要用到一些相关的类和接口,主要有数据库的jdbc驱动程序,DriverManager,Connection,Statement,ResultSet,SQLException等。为了将这些复杂的细节与数据库应用程序的设计者隔离开,请设计一个JDBCFacade类,该类提供jdbcOpen(),jdbcSelect(),jdbcUpdate(),jdbcInsert(),jdbcDelete(),jdbcClose()等方法,数据库应用程序的开发者直接使用JDBCFacade类提供的方法就可以实现查询、修改、追加、删除记录等操作。(注:jdbcSelect()方法返回的类型是ResultSet。各方法所需的参数请自行设计)编写一个测试主类,测试你的JDBCFacade类。实验后一周内将实验报告发至sam84149@gmail.com
本文标题:门面模式
链接地址:https://www.777doc.com/doc-4077671 .html