《Java设计模式之Facade模式.ppt》由会员分享,可在线阅读,更多相关《Java设计模式之Facade模式.ppt(8页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Java设计模式之Facade模式 GOF设计模式一书对Facade模式是这样描述的:为子系统中的一组接口提供一个统一接口。Facade模式定义了一个更高层的接口,使子系统更加容易使用。大致意思是说:使用一种比原有方式更简单的办法与系统交互。例如,我们把一个很重要的文件,放在了第二抽屉里,而第二个抽屉的钥匙放在了第一个抽屉里,我们要想取出这个文件,第一步肯定要拿到第一个抽屉的钥匙,然后打开它再拿出第二个抽屉的钥匙,最后打开第二个抽屉取出文件。我就上面说的那个情形写一下实现代码,首先我们要实现二个子系统,呵呵,把抽屉比喻成系统,有点夸张了(DrawerOne、DrawerTwo):class D
2、rawerOne public void open()System.out.println(第一个抽屉被打开了);getKey();public void getKey()System.out.println(得到第二个抽屉的钥匙);class DrawerTwopublic void open()System.out.println(第二个抽屉被打开了);getFile();public void getFile()System.out.println(得到这个重要文件);public class Clientpublic static void main(String args)Drawe
3、rOne darwerOne=new DrawerOne();DrawerTwo darwerTwo=new DrawerTwo();darwerOne.open();darwerTwo.open();由于没有使用Fa?ade模式,可以看到要想得到这个文件要首先打开第一个抽屉,然后再打开第二个抽屉,在我们实际所开发的系统中,有时候客户要实现某一操作,并不需要知道实现这一操作的详细步骤,而是简单地点击某一个按钮就可以得到自己想要的结果。下面对上面的代码使用Fa?ade模式进行改进,建立一个FacadeDrawer类:class DrawerFacadeDrawerOne darwerOne=ne
4、w DrawerOne();DrawerTwo darwerTwo=new DrawerTwo();public void open()darwerOne.open();darwerTwo.open();修改Client类:public class DrawerClientpublic static void main(String args)DrawerFacade drawer=new DrawerFacade();drawer.open();输出结果如下:第一个抽屉被打开了得到第二个抽屉的钥匙第二个抽屉被打开了得到这个重要文件正如上面所说,客户端client,它并不需要关心子系统,而是关心DrawerFacade所留下来的和外部交互的接口,而子系统在DrawerFacade的聚合。Facade模式主要适用于以下几种情况:1)不需要使用一个复杂系统的所有功能,而且可以创建一个新的类,包含访问系统的所有规则。如果只需要使用系统的部分功能,那么你为新类所创建的API将比原系统的API简单的多。2)希望封装或者隐藏系统原系统。3)希望使用原系统的功能,而且还希望增加一些新的功能。4)编写新类的成本小于所有人学会使用或者未来维护原系统上所需的成本。Fasade模式可以用下面的示意图来表示:更多资料 java培训 http:/ 实际上是个理顺系统间关系,降低系统间耦合度的一个常用的办法