外观模式 (Facade)
为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
外观模式是一种结构型模式。
aaarticlea/png;base64,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ePDg1157jf0R91Y7f/782LFjn3322aioKIOzONB64QS2npurk5aW1qtXL+79bPBYlJeXOzo6du/efc2aNS3N4mDnaL322muDBw8ODQ017UYxFtl6/vwZJycn/rOWLFnSr18/Jycn/vy0ls4vpvkI2tnZ2dnZsY8x+aw2tF4y4rS+qampukRqFocAAA1OSURBVLq6oaGBewezS95++20rKytra+suXbrwnxUdHW1tbd21a9cOHTocPXq0rq6OXU9JScngwYOtra07deq0aNEinTngaL1wBlvPzv3g9mFNTc2iRYs6derEHQv++7mlY/HPf/7T2tqancVRXV3Nn8XR0NCQn5/PztGKjo427RZx20Vx6+vq6mpqavjFqaurO3r0aIcOHbp27coeC51neXh4sOdX37598/PzGxoamJbPLz5cw9GH1j/BYOvLyspeffVV/jwcdkmXLl38/Pxu376dmJjIf1ZlZeXt27cvXLjQu3fvAQMGxMXFsetpaGgoKChoaRYHWi+cwdazcz+4fcifq8MeC/77uaVjce/evZZmcfDnaJn2ygB/uyhufVxcnM48nLi4uAEDBvTu3fvChQvssdB5VmlpKXt+dezYcdCgQewvYFs6v/jQen1o/RMEzsMxcv1369atW7duZfT27C+//PLRRx+xcwlamqWA1gskZB4O/zFCjsXDhw8/+ugjdl6H/rFITk5+8803e/bsmZCQUFpaatrN4W8Xxa3Xn4ejs591nrV27drk5GRGwPmVnJzMnzfFoPWGoPVPKCgo4OZsrG62Zs2a0NDQgoIC7r1YXV2tVqttbW0nT568evXq2bNnc+/F9PR0Pz+/1atXq1QqdqZHdnY2u+bQ0NA1a9asXr2anV2QmJjIvmhUVNTq1asnT56sUCi6du2qUqlWr15tcHZBm1HW+sTERHbOxmoePz+/Dz/8kDvD+Y9hjwX3fjZ4LNhj6unpyR4LW1tbtVpdXV3NMMx3332nc3RYUVFRpt0ualqfnp7+4YcfDho0iH+AvL29ExMT+cXJzs5esmQJt1fHjh3Lb31iYqK3tzd7fllbW/v4+BQUFBg8v7KzswMDA/mvpXMETQWtlwyJc6OysnL58uULeJYvX87+P/vu3bsXLFgQEhLCPjIkJGTBk9hf6B0/flxnif6a2fkhLa1nwYIFx48fN+FGUdZ6pvlY6Owxds/rHC+De/Wpx4I7ygbXo/8Yk6Cm9cyTZwF/P3N7nj0WOTk5RvYqt+e5Y8q0cH4ZX4+poPWSwX0uBaKv9VSiqfVUQuslg9YLhNbLAlpv5tB6yaD1AqH1soDWmzm0XjJovUBovSyg9WYOrZcMWi8QWi8LaL2ZQ+slg9YLhNbLAlpv5tB6yaD1AqH1soDWmzm0XjJovUBovSyg9WYOrZcMWi8QWi8LaL2ZQ+slo1QqX3755X/B04wbN07C1vfu3VvqHSAPvXv3lqT1VlZWkyZNknrrZWDw4MFovTSUSuWHH364EZ5m6dKlErbe1tZW6h0gD+wtXEQ+QBqNxtra2tfXV+qtl4G33noLrZcGruEIhGs4soBrOGYO13Akg9YLhNbLAlpv5tB6yaD1AqH1soDWmzm0XjJovUBovSyg9WYOrZcMWi8QWi8LaL2ZQ+slg9YLhNbLAlpv5tB6yaD1AqH1soDWmzm0XjJovUBovSyg9WYOrZcMWi8QWi8LaL2ZQ+slg9YLhNbLAlpv5tB6ybD3w/knPM0bb7wh7f1wpN4B8iDh/XAmTpwo9dbLwIsvvojWS0OpVM6YMWMTPM2yZcskbP2wYcOk3gHyINX9cLp16+bn5yf11ssA7ocjGVzDEQjXcGQB13DMHK7hSAatFwitlwW03syh9ZJB6wVC62UBrTdzaL1k0HqB0HpZQOvNHFovGbReILReFtB6M4fWS0by1u/bt2/fvn03btzw9vZ+9OiRhCMxzmJbf/Lkya1bt3IjOXnypFQjEcIyW//o0SNvb++bN2+yZ5NUwxACrZeMOOdGTU3Nnj177t69q7M8JSXF09MzPj7+2rVrS5cu3bZtm/5jzATFrWePTkyzlJQU7kenTp0KDAz84osv2G+/+OKLwMDAU6dOkRtMO1Hc+lOnTsXwcGfK3bt3t23btnTp0mvXrsXHx3t6evKPoLlB6yVD+ty4d+/e6dOnjxw58txzz2k0GiOvzu5H/ceYCVpbX1FRkZ6ePnny5PHN5s2bd+7cubq6OsbQmWnm5yqtrf/1119XrVo1nmf37t337t3Tf3Uzv+Jn5u8f46htfX19fUVFRVNTk/6PqqqqHjZjH1NVVaXVarVaLbe8vr6eYZjt27f37NmzR48eHTp04He8qampoqLinXfe2b59O7ukpKTE1tY2NTVVq9WafjvbzWxbz+55nYWPHz9+yMMeC61WW1VVxe55dvnjx48zMjJsbW1LSkq453JbWlVVtXz58lWrVvHXvGrVquXLl1dVVZl0E03GPFvP7nmdhfX19fxj9PjxY+6M484v7llTp07lzhQWu6VarTY1NZV/BLdv3/7OO++0dOZKDq2XjJFz4/Tp02PGjCktLdX/kZOT08Bm7GOcnJxiY2NjY2O55adPn2YY5tGjR4WFhZcuXerTpw+/9aWlpWPGjDl06BB3jb6xsbGoqOj999+PjY01/Xa2m9m2nt3zOgs9PT0H8rDHIjY21snJid3z7HJPT8/a2tqioqLGxkbuudyWOjk5bd68+cGDB/w1P3jwYPPmzU5OTibdRJMxz9aze15n4enTp/nHyNPTkzvjuPOLe1ZxcbHOb7PYLY2NjX3//ff5R/DRo0eHDh1q6cyVHFovGSPnhsF38MOHD52cnHbs2JHW7ODBgx988EHv3r1Hjhy5du1abvnChQsPHTrEPkv/+kxLV2wk/11xS8y29fp7bNWqVSEhIWk87LFQq9W9evX64IMPDh48yC4PCQlZvXq1zgq5LW3pWJjzVQLzbL3+Hjt06JCrqyv/GIWEhNjZ2VlZWSmVSu78iomJcXJyevjwof462S01eCwk/12xEWi9ZFrb+paqrVAoZsyYcfz4cYNrRuvbo7Wtb2kJe1+dqKiox48ft7TmjIyM9evXs49B6wVqQ+sNLlEoFN26dfP39y8sLDS45oyMDI9mGzZsuHTpElovJtpan5KSwv6if/Xq1d27dw8PD2e/ZWdfGGm9keKg9e2hfz7/9ttv3HyMESNGODs7s1/v2bOnpqbGSOuNFIc97vxZN2i9QAbfG/zZTc7OziNGjOAO2W+//dZS63XWo7PmEydOuDbbtGmTwfW0NB4zgdZLRv/ccHNzmzBhwoQJE0aNGtWpUyc7Ozv227CwMAatN4/W79u3b0KzHj16DB06lP363XffffDgQWtbX1dXl5WV5eLiwh1l/rOEjMd8mE/rHzx48O6777LHZejQoT179uQO2b59+9rWej5cwxEfba3ntPYaDlpPiAmv4ej3xd7ePi8vb+jQoRkZGU9ds5DxSMt8Ws8n/BpOS63Xn22F1osPrUfrySLa+s6dO48ePfrKlSu1tbVPXbOQ8UiL1tbPnDlz165d/Mej9eKzrNZrtVqNRrNw4ULHZuy8jldeeWXkyJGOPDt27CgoKDh06JCjo6NSqbSysnr99dcdHR0jIyP56+Hm6nAzfAoKCkhvdRvIqPXnzp1bu3at/rFg5+Hwl69du/aLL75g537wl7NzP9j1sMeLExkZuXbt2qysLFJb2z5yaX1BQUFMTMxTj4Wrq6tGo9FqtS0dU3Y9/Lk67Awf9llkN7tN0HrJGDk3CgsLv/rqK27OBl9SUtKXzdjHKJXKmTNnfsnDziW4dOnSl086ceKEwVfH3822xHjrk5KSLl26pLPwxIkT+seCnYejcywKCwu/1MMdd/zdrBBPfW9cunQpKSlJZ6HOnj9x4oRGo+nWrVtAQAC3kP8sg8dU/9XN+f+6GLN//xhHbetFWM/GjRsDAgJOnjx59+7drVu3Llu27Nq1a+0fDAlm23qi69m7d6+Xl1dycjL7bXJyspeX1969e9s/GELMs/VE13Pt2rVly5Zt3br17t27J0+eDAgI2LhxYztHQg5aLxlTnRtubm779+9vwxPDwsLCwsKys7OnTp2q8yeaZoWC1u/fv9/Nza09z2rzURaNrFvf5rPgwYMHU6dOzc7OZs+mdg6DKLReMmb7u1BzQ0HrLYGsW28J0HrJoPUCofWygNabObReMmi9QGi9LKD1Zg6tlwxaLxBaLwtovZlD6yWD1guE1ssCWm/m0HrJoPUCofWygNabObReMmi9QGi9LKD1Zg6tlwxaLxBaLwtovZlD6yWD1guE1ssCWm/m0HrJKJVKBweH/wdPM2PGDAlbP3DgQKl3gDwMHDhQktb/6U9/WrRokdRbLwOvvPIKWi+NsLCwRSDMp59+WllZKf4x0mg0Um+6nIh/+7zc3FypN1pOzPl+SsbJu/UAACAEWg8AQD+0HgCAfmg9AAD90HoAAPqh9QAA9EPrAQDoh9YDANAPrQcAoB9aDwBAP7QeAIB+aD0AAP3QegAA+qH1AAD0Q+sBAOiH1gMA0A+tBwCgH1oPAEA/tB4AgH5oPQAA/dB6AAD6ofUAAPRD6wEA6IfWAwDQ7ymt9/Dw+AkAAGTu0KFDzz33XIutBwAAmqD1AAD00239CQAAoM7vv//+ROtN/YsBAAAwO2g9AAD90HoAAPqh9QAA9EPrAQDoh9YDANAPrQcAoN//ByuqpqnZkYnZAAAAAElFTkSuQmCC" alt="" />
图-外观模式结构图
Facade : 了解每个子系统类的功能,负责分发客户端的请求给各个子系统去处理。
class Class1 {
public void op1() {
System.out.println("方法1");
}
}
class Class2 {
public void op2() {
System.out.println("方法2");
}
}
class Class3 {
public void op3() {
System.out.println("方法3");
}
}
Subsystem Classes : 实现子系统功能。在不感知 Facade 的情况下,处理 Facade 对象分配的工作,
class Facade {
private Class1 one = new Class1();
private Class2 two = new Class2();
private Class3 three = new Class3();
public void op1() {
System.out.println("Facade op1()");
one.op1();
}
public void op2() {
System.out.println("Facade op2()");
two.op2();
}
public void op3() {
System.out.println("Facade op3()");
three.op3();
}
public void Method() {
System.out.println("Facade Method()");
three.op3();
two.op2();
one.op1();
}
}
测试代码
public class FacadePattern {
public static void main(String[] args) {
Facade facade = new Facade();
facade.Method();
facade.op1();
}
}
运行结果
Facade Method()
方法3
方法2
方法1
Facade op1()
方法1
1、外观模式为复杂子系统提供了一个简单接口,并不为子系统添加新的功能和行为。
2、外观模式实现了子系统与客户之间的松耦合关系。
3、外观模式没有封装子系统的类,只是提供了简单的接口。 如果应用需要,它并不限制客户使用子系统类。因此可以再系统易用性与通用性之间选择。
4、外观模式注重的是简化接口,它更多的时候是从架构的层次去看整个系统,而并非单个类的层次。
推荐
本文属于 JAVA设计模式系列 。
参考资料
《大话设计模式》
《HeadFirst设计模式》
-
Java设计模式——外观模式
JAVA 设计模式 外观模式 用途 外观模式 (Facade) 为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用. 外观模式是一种结构型模式. 结构
-
java设计模式——外观模式(门面模式)
一. 定义与类型 定义:门面模式,提供一个统一的接口,用来访问子系统中的一群接口,门面模式定义了一个高层接口,让子系统更容易使用 类型:结构性 二. 使用场景 子系统越来越复杂,增加外观模式提供简单调 ...
-
Java设计模式---外观模式
外观模式(Facade) 外观模式的意图是:为子系统提供一个接口,便于它的使用. 解释: 简单的说,外观模式就是封装多个上层应用需要的方法,使得上层调用变得简单,为上层提供简单的接口,是设计模式中 ...
-
Java设计模式-外观模式(Facade)
外观模式是为了解决类与类之家的依赖关系的,像spring一样,可以将类和类之间的关系配置到配置文件中,而外观模式就是将他们的关系放在一个Facade类中,降低了类类之间的耦合度,该模式中没有涉及到接口 ...
-
菜鸟版JAVA设计模式—外观模式
外观模式是一种比較easy理解的模式,作用非常easy.就是解耦合. 结构也是非常easy,一个外观类.这个外观类持有非常多的业务类. 再由客户类去调用这个外观类去实现一些列的业务操作... 这个模式 ...
-
java设计模式----外观模式(门面模式)
外观模式主要应用场景在于为复杂的子系统提供一个简单的接口,提高子系统的独立性. 创建DrawerOne类: package facade; public class DrawerOne { publi ...
-
Java设计模式——组合模式
JAVA 设计模式 组合模式 用途 组合模式 (Component) 将对象组合成树形结构以表示“部分-整体”的层次结构.组合模式使得用户对单个对象和组合对象的使用具有唯一性. 组合模式是一种结构型模 ...
-
java设计模式--单列模式
java设计模式--单列模式 单列模式定义:确保一个类只有一个实例,并提供一个全局访问点. 下面是几种实现单列模式的Demo,每个Demo都有自己的优缺点: Demo1: /** * 单列模式需要满足 ...
-
3.java设计模式-建造者模式
Java设计模式-建造者模式 在<JAVA与模式>一书中开头是这样描述建造(Builder)模式的: 建造模式是对象的创建模式.建造模式可以将一个产品的内部表象(internal repr ...
随机推荐
-
MIT 6.828 JOS学习笔记11 Exercise 1.8
Exercise 1.8 我们丢弃了一小部分代码---即当我们在printf中指定输出"%o"格式的字符串,即八进制格式的代码.尝试去完成这部分程序. 解答: 在这个练 ...
-
【.NET】传智播客第【19】期就业班视频(高清无加密)
[.NET]传智播客第[19]期就业班视频(高清无加密) 下载地址:http://fu83.cn/thread-85-1-1.html
-
IOS 应用的架构解析
首先新建一个IOS 的应用工程,主要讲解一下的文件组成: main.m XXXXDelegete.h\.m MainWindow.xib info.plist 文件 IOS 应用程序由UIKit 封装 ...
-
linux学习:curl与netcat用法整理
CURL 语法: curl [option] [url] 常用参数:-A/--user-agent <string> 设置用户代理发送给服务器-b/--cookie <name=st ...
-
【three.js练习程序】旋转物体自身
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
-
logstash向elasticsearch写入数据,如何指定多个数据template
之前在配置从logstash写数据到elasticsearch时,指定单个数据模板没有问题,但是在配置多个数据模板时候,总是不成功,后来找了很多资料,终于找到解决办法,就是要多加一个配置项: temp ...
-
java collection 类图
转载:http://visionsky.blog.51cto.com/733317/371809/
-
WCF的坎坷发布之路
背景 发布WCF服务之后,总会遇到这样活着那样的错误.再加上对IIS中的一些程序应用不太熟悉,所以解决起来比较困难.网上的解决方案特别多,但都只给出了个别一种原因.经过一个下午和一个上午的 ...
-
Webpack, 现在最流行的模块打包工具.压缩打包
压缩bundle.js 1.把我们项目的代码从es6 -> es5 [babel] 参考:http://babeljs.io/docs/setup/#installation 1.1.安装包 b ...
-
linux 程序自动运行总结
1.开机启动时自动运行程序Linux加载后, 它将初始化硬件和设备驱动, 然后运行第一个进程init.init根据配置文件继续引导过程,启动其它进程.通常情况下,修改放置在 /etc/rc或 /etc ...