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

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

定义

为子系统中的一组接口提供一个统一的入口。

角色

SubSystem(子系统角色)

子系统功能的具体实现,并提供给Facade(外观角色)调用。

public class SubSystemA {    public void methodA(){        System.out.println("子系统A方法A");    }}复制代码
public class SubSystemB {    public void methodB(){        System.out.println("子系统B方法B");    }}复制代码

Facade(外观角色)

在定义的方法中通过调用SubSystem(子系统角色)实现相应的功能,从而供客户端直接调用。

public class Facade {    private SubSystemA subSystemA = new SubSystemA();    private SubSystemB subSystemB = new SubSystemB();    public void provideMthod() {        subSystemA.methodA();        subSystemB.methodB();    }}复制代码

客户类

public class FacadeClient {    public static void main(String[] args) {        Facade facade = new Facade();        facade.provideMthod();    }}复制代码

运行结果:

子系统A方法A子系统B方法B复制代码

优点

(1)对客户端屏蔽了子系统组件,减少了客户端所需处理的对象数目,并使得子系统使用起 来更加容易。

(2)实现了子系统与客户端之间的松耦合关系。

(3)子系统之间相对独立。

缺点

(1)增加新的子系统可能需要修改外观类的源代码,违背了开闭原则。

(2)不能很好地限制客户端直接使用子系统类,如果对客户端访问子系统类做太多的限制则减 少了可变性和灵活 性。

适用场景

(1)需要为访问一系列复杂的子系统提供一个简单入口时。

(2)个子系统之间存在很大的依赖性。引入外观类可以将子系统与客户端解 耦,从而提高子系统的独立性和可移植性。

转载地址:http://ckdel.baihongyu.com/

你可能感兴趣的文章
T-SQL之表变量与临时表
查看>>
UVALIVE 4004
查看>>
ExtJS4.1:AJAX提交数据的三种方式,80%人都没用过第三种
查看>>
Flash图片处理 图像处理 效果 滤镜 pixelbender blender mode
查看>>
SSIS典型应用场景分析
查看>>
mysql 执行状态分析 show processlist
查看>>
【数据存储】利用IO流操作文件
查看>>
ios实例开发精品文章推荐(8.14)
查看>>
看板,敏捷的另一种实现方式
查看>>
Mfc资源消息的响应机制
查看>>
《JAVA与模式》之策略模式
查看>>
Huffman树
查看>>
数组长度计算
查看>>
HTML和CSS的精华
查看>>
VC POST表单——登录验证新浪邮箱
查看>>
UI自动化测试元素定位思想
查看>>
【leetcode】4Sum(middle)
查看>>
06 redis中set结构及命令详解
查看>>
跟我一起数据挖掘(19)——什么是数据挖掘(2)
查看>>
HDU 1698 just a hook 线段树,区间定值,求和
查看>>