原创作品,可以转载,但是请标注出处地址http://www.cnblogs.com/V1haoge/p/6484128.html

1、外观模式简介

  外观模式,一般用在子系统与访问之间,用于对访问屏蔽复杂的子系统调用,采用耳目一新的外观类提供的简单的调用方法,具体的实现由外观类去子系统调用。

  外观模式任然是一种中间件类型的模式,使用外观模式之后子系统的方法调用并非完全屏蔽,只是为访问者提供了一种更佳的访问方式,如果你不嫌麻烦,任然可以直接进行子系统方法调用。

  甚至于在子系统与子系统之间进行调用时也可以通过各自的外观类来进行调用,这样代码方便管理。

  下面请看代码实例:更能显示这种情况

子系统方法1

 public class SubMethod1 {
public void method1(){
System.out.println("子系统中类1的方法1");
}
}

子系统方法2

 public class SubMethod2 {
public void method2(){
System.out.println("子系统中类2方法2");
}
}

子系统方法3

 public class SubMethod3 {
public void method3(){
System.out.println("子系统类3方法3");
}
}

外观类:

 public class Facader {
private SubMethod1 sm1 = new SubMethod1();
private SubMethod2 sm2 = new SubMethod2();
private SubMethod3 sm3 = new SubMethod3();
public void facMethod1(){
sm1.method1();
sm2.method2();
}
public void facMethod2(){
sm2.method2();
sm3.method3();
sm1.method1();
}
}

测试类:

 public class Clienter {

     public static void main(String[] args) {
Facader face = new Facader();
face.facMethod1();
// face.facMethod2();
} }

  其实直接调用也会得到相同的结果,但是采用外观模式能规范代码,外观类就是子系统对外的一个总接口,我们要访问子系统是,直接去子系统对应的外观类进行访问即可!

2、外观模式应用场景

  当我们访问的子系统拥有复杂额结构,内部调用繁杂,初接触者根本无从下手时,不凡由资深者为这个子系统设计一个外观类来供访问者使用,统一访问路径(集中到外观类中),将繁杂的调用结合起来形成一个总调用写到外观类中,之后访问者不用再繁杂的方法中寻找需要的方法进行调用,直接在外观类中找对应的方法进行调用即可。

  还有就是在系统与系统之间发生调用时,也可以为被调用子系统设计外观类,这样方便调用也,屏蔽了系统的复杂性。


同系列文章:

Java设计模式之《外观模式》及应用场景的更多相关文章

  1. java设计模式之组合模式

    组合模式 组合模式,将对象组合成树形结构以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性.掌握组合模式的重点是要理解清楚 “部分/整体” 还有 ”单个对象“ 与 & ...

  2. Java设计模式应用——组合模式

    组合模式实际上是一种树形数据结构.以windows目录系统举例,怎么样用java语言描述一个文件夹? 定义一个文件夹类,文件夹类中包含若干个子文件类和若干个文件类. 进一步抽象,把文件夹和文件都看做节 ...

  3. java设计模式5.组合模式、门面模式、享元模式、桥接模式

    组合模式 在面向对象的语言中,树结构有着巨大的威力,一个基于继承的类型的等级结构便是一个数结构,一个基于合成的对象结构也是一个数结构.组合模式将部分与整体的关系用树结构表示出来,使得客户端把一个个单独 ...

  4. JAVA设计模式之组合模式(composite)

    组合模式:树状结构专用模式 代码如下: package com.srr.dp.composite; import java.util.ArrayList; import java.util.List; ...

  5. 老和尚给小和尚讲故事引发了Java设计模式:组合模式

    目录 示例 组合模式 定义 意图 主要解决问题 优缺点 安全式和透明式的组合模式 安全式的合成模式的结构 透明式的合成模式的结构 老和尚和小和尚的故事 示例 有一个绘图系统,可以描绘各种图形,假设现在 ...

  6. Java设计模式之模板模式及使用场景

    模板模式,顾名思义,就是通过模板拓印的方式. 定义模板,就是定义框架.结构.原型.定义一个我们共同遵守的约定. 定义了模板,我们的剩余工作就是对其进行充实.丰润,完善它的不足之处. 定义模板采用抽象类 ...

  7. Java设计模式之代理模式(静态代理和JDK、CGLib动态代理)以及应用场景

    我做了个例子 ,需要可以下载源码:代理模式 1.前言: Spring 的AOP 面向切面编程,是通过动态代理实现的, 由两部分组成:(a) 如果有接口的话 通过 JDK 接口级别的代理 (b) 如果没 ...

  8. Java设计模式——装饰者模式

    JAVA 设计模式 装饰者模式 用途 装饰者模式 (Decorator) 动态地给一个对象添加一些额外的职责.就增加功能来说,Decorator 模式相比生成子类更为灵活. 装饰者模式是一种结构式模式 ...

  9. JAVA设计模式--装饰器模式

    装饰器模式 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构.这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装. 这种模式创建了一个装饰 ...

  10. 折腾Java设计模式之访问者模式

    博客原文地址:折腾Java设计模式之访问者模式 访问者模式 Represent an operation to be performed on the elements of an object st ...

随机推荐

  1. Voilin 与 乐谱

    小提琴属于高音乐器,所以它使用的是高音谱号: 用音的时候,线不够用,那就得上加线,或下加线. 小提琴的弦对应的五线谱的位置为: 第四弦,对应五线谱的下加两条线的下面 第三弦,对应五线谱的第一线的下面 ...

  2. 40+ Sublime Text 最佳插件汇总

    大家好!我想要收集最好的Sublime Text插件,因为这可以改善我们的工作流程.我搜索了许多网站,下面就是我的发现. WebInspector 调试JavaScript特别棒的工具,成熟的Subl ...

  3. PHP格式化字符串函数 sprintf()

    定义和用法 sprintf() 函数把格式化的字符串写入一个变量中. 语法 sprintf(format,arg1,arg2,arg++) 参数 描述 format 必需.转换格式. arg1 必需. ...

  4. javascript的字符串操作

    一,把字符串的首字母大写返回一个新的字符串 1.1简单写法,把一个单词的首字母大写 String.prototype.firstUpperCase = function(){ return this[ ...

  5. Weblogic常见故障常:JDBC Connection Pools

    http://blog.csdn.net/woshixuye/article/details/24122579 有些时候是数据库连接池出现了问题,测试的时候显示没有连接池了,重启WebLogic都不行 ...

  6. 集群环境下JSP中获取客户端IP地址的方法

    String ip = request.getHeader("X-Forwarded-For");if (ip == null || ip.length() == 0 || &qu ...

  7. mac命令行对复杂ipa包重新签名

    最近在做ios的自动化平台,需要通过命令行安装卸载ipa包 好了问题来,别人上传的ipa包,很可能是开发签名了只能在特定手机上安装的测试ipa包,那我们如何将其安装在我们的自动化的iphone上呢? ...

  8. 微信小程序怎么做出前端table的效果

    wxml代码: <view class="container">     <view class="table">         &l ...

  9. mac bash_profile

    # This is the filename where your incoming mail arrives. MAIL=~/mbox MAILCHECK=30 HISTFILE=~/.histor ...

  10. linux开机自启动服务优化设置命令

    1.设置成英文字符,避免出现乱码[root@xuegod62 ~]# LANG=en2.两种配置linux开机自启动服务命令:1)[root@xuegod62 ~]# ntsysv2)[root@xu ...