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

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

1 概述

  外观模式提供了一个统一的接口,用来访问子系统中的一群接口。这样可以避免客户端和子系统之间的紧耦合。

  这种模式需要将一系列的子系统组合到外观中,然后将具体的工作交给各个子系统去完成。如此一来,可以简化接口的调用。

  其本质就是将系统与客户端交互的地方封装起来。

2 示例

    这个模式,总体来说,很简单,理解起来也不困难。

    依然以手机为例,手机开机的时候,我们只需要按一下电源键,在电源键的触发事件中,包含了CPU的开启、系统加载、SIM卡信息加载等。如果把每一个模块的接口都暴露出来,让我们一个个去按,那岂不是太坑爹了。而现在我们只需要一个开机接口,就可以实现上述所有模块的通电、加载功能,这就是外观模式的功效。

    首先把开机需要用到的模块以及其加载方法定义一下。

CPU:

1 package org.scott.facade; 2 /**  3  * @author Scott 4  * @date 2013-12-9  5  * @description 6  */ 7 public class CPU { 8     public void start(){ 9         System.out.println("CPU has started ...");10     }11 }

 

SIM卡:

1 package org.scott.facade; 2 /**  3  * @author Scott 4  * @date 2013-12-9  5  * @description 6  */ 7 public class SIM { 8     public void start(){ 9         System.out.println("SIM card has loaded ...");10     }11 }

 

系统UI:

1 package org.scott.facade; 2 /**  3  * @author Scott 4  * @date 2013-12-9  5  * @description 6  */ 7 public class UI { 8     public void start(){ 9         System.out.println("UI has loaded successfully ...");10     }11 }

 

    所有子系统的操作都封装到我们的外观类中,也就是下面的Phone:

1 package org.scott.facade; 2 /**  3  * @author Scott 4  * @date 2013-12-9  5  * @description 6  */ 7 public class Phone { 8     private CPU cpu; 9     private SIM sim;10     private UI ui;11     12     public Phone(){13         cpu = new CPU();14         sim = new SIM();15         ui = new UI();16     }17     18     public void start(){19         System.out.println("The phone is starting ...");20         cpu.start();21         sim.start();22         ui.start();23         System.out.println("Phone has started successfully!");24     }25 }

  

  也就是这么回事,来个测试类客户端,开机:

1 package org.scott.facade; 2 /**  3  * @author Scott 4  * @date 2013-12-9  5  * @description 6  */ 7 public class FacadeTest { 8  9     public static void main(String[] args) {10         Phone phone = new Phone();11         phone.start();12     }13 14 }

 

启动结果:

The phone is starting ...CPU has started ...SIM card has loaded ...UI has loaded successfully ...Phone has started successfully!

 

  外观模式适配模式不同,适配器模式是把当前类或者对象、接口转变成符合其他条件的东西,而外观模式是解决类与类之间的依赖关系的,用来提供子系统的一个简化接口。   

转载于:https://www.cnblogs.com/Scott007/p/3466112.html

你可能感兴趣的文章
JavaScript学习笔记——语法基础1.1
查看>>
我回答了90%的面试题,为什么还被拒?
查看>>
Html - Table 表头固定和 tbody 设置 height 在IE不起作用的解决
查看>>
20165205 学习基础与C语言基础调查
查看>>
iOS SVN终端指令
查看>>
Linux如何更新软件源
查看>>
NYOJ-289 苹果 又是一个典型的01背包和上题一样没啥好说的
查看>>
HDU 2262 回溯算法 递归枚举
查看>>
九度0J 1374 所有员工年龄排序
查看>>
listview初始化后仍为空
查看>>
无刷新分页
查看>>
SIFT算法
查看>>
git各种撤销操作
查看>>
每天努力一点之SQL
查看>>
UINavigationBar-使用总结
查看>>
夺命雷公狗jquery---11属性操作
查看>>
linux 常用命令
查看>>
display属性和属性值(18个属性值,常见面试题)
查看>>
微信小程序图片使用示例
查看>>
Ubuntu16.04+cuda8.0rc+opencv3.1.0+caffe+Theano+torch7搭建教程
查看>>