博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
门面模式
阅读量:5453 次
发布时间:2019-06-15

本文共 1596 字,大约阅读时间需要 5 分钟。


门面模式

  • 门面模式:也叫作外观模式,要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行。门面模式提供一个高层次的接口,使得子系统更容易使用。
  • 门面模式注重“统一的对象”,也就是提供一个访问子系统的接口,除了这个接口不允许有任何访问子系统的行为发生,门面模式不参与子系统内的业务逻辑,其通用类图如下:

    • Facade门面角色:客户端通过调用该角色访问系统,此角色知道子系统的所有功能和责任。一般情况下,本角色会将所有客户端发来的请求委派到相应的子系统中去,也就是该角色没有实际的业务逻辑,只是一个委托类。
    • Subsystem子系统角色:可以同时 有一个或者多个子系统。每个子系统都不是一个单独的类,而是一个类的集合,子系统并不知道门面的存在,如下是门面模式的通用代码:
public class SubClass1 {    public void doSomething(){        System.out.println("this is a method in SubClass1");    }}public class SubClass2 {    public void doSomething(){        System.out.println("this is a method in SubClass2");    }}public class SubClass3 {    public void doSomething(){        System.out.println("this is a method in SubClass3");    }}public class Facade {    private SubClass1 class1 = new SubClass1();    private SubClass2 class2 = new SubClass2();    private SubClass3 class3 = new SubClass3();    public void doSomething(){        this.class1.doSomething();        this.class2.doSomething();    }    public void doAnotherthing(){        this.class3.doSomething();        this.class2.doSomething();    }}public class Client {    /**     * @param args     */    public static void main(String[] args) {        // TODO Auto-generated method stub        Facade facede = new Facade();        facede.doSomething();        facede.doAnotherthing();    }}
View Code
门面模式的优缺点
  • 门面模式的优点
    • 减少系统的相互依赖,所有的依赖都是对门面对象的依赖,与子系统无关。
    • 提高了灵活性,不管子系统内如何变化,只要不影响到门面对象就无需对上层代码进行调整。
    • 提高安全性,想让客户端访问系统的哪些业务就开通哪些逻辑,客户端无法访问不在门面模式中开通的方法。
  • 门面模式的缺点
    • 门面模式最大的缺点就是不符合开闭原则,对修改关闭,对扩展开放。如果出现增加或者删除功能,只能修改门面,而不能通过继承或者覆写的方式修正。

转载于:https://www.cnblogs.com/zhanglei93/p/6094139.html

你可能感兴趣的文章
多图片上传插件
查看>>
Linux设置定时任务
查看>>
git命令的使用
查看>>
eclipse 自定义代码块设置(代码模板)
查看>>
Pandas选择数据
查看>>
webpack最佳入门实践系列(10)
查看>>
poj2411铺砖——状压DP
查看>>
一日一笑话
查看>>
【开源】OSharp框架解说系列(5.2):EntityFramework数据层实现
查看>>
centos 彻底删除nodejs默认安装文件
查看>>
20180709
查看>>
懒得写了,直接复制代码了。。。跨公司发料到订单和退料
查看>>
20145228 《信息安全系统设计基础》第六周学习总结 (1)
查看>>
【原创】Qt 使用ODBC driver 连接SQL Server
查看>>
题目+思路(一句话开脑洞)
查看>>
HTML5学习
查看>>
线下作业MySQL #20175201
查看>>
Seasar2:SAStruts:View(JSP)
查看>>
jira-6.0.1-x64下载地址
查看>>
PAT IO-03 整数均值
查看>>