外观模式--Facade


外观模式:为子系统中的一组接口提供一致的界面,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) 编写新类的成本小于所有人学会使用或者未来维护原系统上所需的成本。

优质内容筛选与推荐>>
1、一定要记住的OO设计原则:
2、Clairaut 定理 证明
3、csharp read excel file get sheetName list
4、ASP.NET涉及敏感词汇函数
5、软件测试之迁移测试


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号