外观模式:为子系统中的一组接口提供一致的界面,fa?ade提供了一高层接口,这个接口使得子系统更容易使用。
外观模式定义了一个更高层的接口,使子系统更加容易使用。Facade模式是为了降低子系统之间,客户端与实现化层之间的依赖性。当在构建一个层次化的系统时,也可以同过使用Facade模式定义系统中每一层的入口,从而简化层与层之间的依赖关系。
package com.qinsoft.design; public class Facade { public static void main(String[] args) { //只需要DrawerFacade,不关心子系统之间的依赖关系 DrawerFacade drawer = new DrawerFacade(); drawer.open(); } } /** * 操作一 */ class DrawerOne { void open() { System.out.println("第一个抽屉被打开了"); getKey(); } void getKey() { System.out.println("得到第二个抽屉的钥匙"); } } /** * 操作二 */ class DrawerTwo { void open() { System.out.println("第二个抽屉被打开了"); getFile(); } public void getFile() { System.out.println("得到这个重要文件"); } } /** * Facade */ class DrawerFacade { DrawerOne darwerOne=new DrawerOne(); DrawerTwo darwerTwo=new DrawerTwo(); public void open() { darwerOne.open(); darwerTwo.open(); } }
Facade模式主要适用于以下几种情况:
1) 不需要使用一个复杂系统的所有功能,而且可以创建一个新的类,包含访问系统的所有规则。如果只需要使用系统的部分功能,那么你为新类所创建的API将比原系统的API简单的多。
2) 希望封装或者隐藏系统原系统。
3) 希望使用原系统的功能,而且还希望增加一些新的功能。
4) 编写新类的成本小于所有人学会使用或者未来维护原系统上所需的成本。