开发者社区> 汤高> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Java设计模式(九)----外观模式

简介:
+关注继续查看

外观模式
一、定义
二、结构
三、案例
四、特点


一、定义

Facade(外观)模式为子系统中的各类(或结构与方法)提供一个简明一致的界面,隐藏子系统的复杂性,使子系统更加容易使用。

二、结构

门面(Facade)角色 :客户端可以调用这个角色的方法。此角色知晓相关的(一个或者多个)子系统的功能和责任。在正常情况下,本角色会将所有从客户端发来的请求委派到相应的子系统去。
子系统(SubSystem)角色 :可以同时有一个或者多个子系统。每个子系统都不是一个单独的类,而是一个类的集合(如上面的子系统就是由SystemA、SystemB、 SystemC三个类组合而成)。每个子系统都可以被客户端直接调用,或者被门面角色调用。子系统并不知道门面的存在,对于子系统而言,门面仅仅是另外一 个客户端而已。


三、案例
源代码

//子系统(SubSystem)角色
public class SystemA {
    public void doA(){
        System.out.println("子系统A的功能");
    }
}
//子系统(SubSystem)角色
public class SystemB {
    public void doB(){
        System.out.println("子系统B的功能");
    }
}
//子系统(SubSystem)角色
public class SystemC {
    public void doC(){
        System.out.println("子系统C的功能");
    }
}


/**
 * 门面(Facade)角色
 * @author Administrator
 *
 */
public class Facade {
    private SystemA systemA;
    private SystemB systemB;
    private SystemC systemC;

    Facade(){
        systemA=new SystemA();
        systemB=new SystemB();
        systemC=new SystemC();
    }
    // 方法 满足客户端需要的功能
    public void doAB(){
        systemA.doA();
        systemB.doB();
    }
    // 方法 满足客户端需要的功能
    public void doABC(){
        systemA.doA();
        systemB.doB();
        systemC.doC();
    }

}

public class Client {

    public static void main(String[] args) {
        Facade f=new Facade();
        System.out.println("客户1需要的两个子系统功能");
        f.doAB();
        System.out.println("----------------------");
        System.out.println("客户2需要的三个子系统功能");
        f.doABC();
    }

}

结果:
客户1需要的两个子系统功能
子系统A的功能
子系统B的功能


客户2需要的三个子系统功能
子系统A的功能
子系统B的功能
子系统C的功能


四、特点

1、外观模式为复杂子系统提供了一个简单接口,并不为子系统添加新的功能和行为。
2、外观模式实现了子系统与客户之间的松耦合关系。
3、外观模式没有封装子系统的类,只是提供了简单的接口。 如果应用需要,它并不限制客户使用子系统类。因此可以再系统易用性与通用性之间选择。
4、外观模式注重的是简化接口,它更多的时候是从架构的层次去看整个系统,而并非单个类的层次。

以上内容来自平时所看书籍和网络资源整理测试所得,如有不完善之处,欢迎指正!

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Java--设计模式-6-外观模式
外观模式(Facade Pattern)应该是最好理解的一个设计模式了,在我们项目中向外部提供一个外部可以访问系统的接口,然由这个接口去耦合子系统或者子接口,外部与子接口完全解耦。这种类型的设计模式属于结构型模式。
0 0
【设计模式】Java设计模式 - 外观模式
外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。
0 0
Java设计模式-外观模式
Java设计模式-外观模式
0 0
【玩转23种Java设计模式】结构型模式篇:外观模式
外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。
0 0
【每天一个java设计模式(十)】 - 外观模式
【每天一个java设计模式(十)】 - 外观模式
0 0
重学 Java 设计模式:实战外观模式
设计模式是解决程序中不合理、不易于扩展、不易于维护的问题,也是干掉大部分ifelse的利器,在我们常用的框架中基本都会用到大量的设计模式来构建组件,这样也能方便框架的升级和功能的扩展。但!如果不能合理的设计以及乱用设计模式,会导致整个编程变得更加复杂难维护,也就是我们常说的;反设计、过渡设计。而这部分设计能力也是从实践的项目中获取的经验,不断的改造优化摸索出的最合理的方式,应对当前的服务体量。
0 0
Java外观模式(门面模式Facade)
外观模式也叫门面模式,是开发过程中使用频率非常高的一种设计模式,但非常容易理解。
0 0
浅谈JAVA设计模式之——外观模式(Facade)
为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
0 0
java设计模式之外观模式(门面模式)(结构型模式)
针对外观模式,在项目开发和实际运用中十分频繁,但是其极易理解,下面就简要介绍一下。 一、概念介绍  外观模式(Facade),他隐藏了系统的复杂性,并向客户端提供了一个可以访问系统的接口。这种类型的设计模式属于结构性模式。
499 0
JAVA设计模式(3)外观模式(门面模式)
2019年阿里云双11活动拼团:https://www.aliyun.com/1111/2019/group-buying-share 针对外观模式,在项目开发和实际运用中十分频繁,但是其极易理解,下面就简要介绍一下。
399 0
+关注
汤高
学习,进步
文章
问答
文章排行榜
最热
最新
相关电子书
更多
JAVA 应用排查全景图
立即下载
Java工程师必读手册
立即下载
Java应用提速(速度与激情)
立即下载