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

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

1. 定义

  为子系统中的一组接口提供了一个统一的界面,Facade模式定义了一个高层接口,这个接口使这个子系统接口更容易使用。

2. 类图

   

3. 示例

  

package com.jerry.designpattern;/** *  * @author Jerry * @date 2015年1月9日 下午11:44:03 */public interface Stock {    /**     * 卖出股票     */    void sell();        /**     * 买入股票     */    void buy();}package com.jerry.designpattern;/** *  * @author Jerry * @date 2015年1月9日 下午11:44:59 */public class StockA implements Stock{    @Override    public void sell() {        // TODO Auto-generated method stub        System.out.println("卖出A股票");    }    @Override    public void buy() {        // TODO Auto-generated method stub        System.out.println("买入A股票");    }}package com.jerry.designpattern;/** *  * @author Jerry * @date 2015年1月9日 下午11:46:01 */public class StockB implements Stock{    @Override    public void sell() {        // TODO Auto-generated method stub        System.out.println("卖出B股票");    }    @Override    public void buy() {        // TODO Auto-generated method stub        System.out.println("买入B股票");    }}package com.jerry.designpattern;/** *  * @author Jerry * @date 2015年1月9日 下午11:47:21 */public class StockC implements Stock{    @Override    public void sell() {        // TODO Auto-generated method stub        System.out.println("卖出C股票");    }    @Override    public void buy() {        // TODO Auto-generated method stub        System.out.println("买入C股票");    }}package com.jerry.designpattern;/** * 外观类 * 基金管理对应的股票 * @author Jerry * @date 2015年1月9日 下午11:48:58 */public class Fund {    private Stock stockA;    private Stock stockB;    private Stock stockC;        public Fund() {        stockA = new StockA();        stockB = new StockB();        stockC = new StockC();    }        public void sell() {        stockA.sell();        stockB.sell();        stockC.sell();    }        public void buy() {        stockA.buy();        stockB.buy();        stockC.buy();    }}package com.jerry.designpattern;/** *  * @author Jerry * @date 2015年1月9日 下午11:51:34 */public class Client {    public static void main(String[] args) {        Fund fund = new Fund();        fund.buy();        fund.sell();    }}

4. 外观模式目的

  外观模式的目的不是给子系统增加的新功能接口,而是为了外部系统减少与子系统多个模块之间的交互,松散耦合,从而使外部系统更简单地使用子系统。

5. 外观模式的优缺点

  外观模式的优点有

  a. 松散耦合

     b. 简单易用

     c. 更好的划分访问的层次

     外观模式的缺点是过多或者不合理的Facade也容易让人产生疑惑,到底是调Facade接口好,还是直接调用模块好。

  

 

转载于:https://www.cnblogs.com/jerry19890622/p/4212060.html

你可能感兴趣的文章
IOS做天气预报
查看>>
C 筛选法找素数
查看>>
TCP为什么需要3次握手与4次挥手(转载)
查看>>
IOC容器
查看>>
ElasticSearch的x-pack配置查询
查看>>
织梦仿站第三课:网站的文件分割
查看>>
Windows 2003全面优化
查看>>
(转)AWK函数
查看>>
linux ---- diff命令
查看>>
URAL 1002 Phone Numbers(KMP+最短路orDP)
查看>>
web_day4_css_宽度
查看>>
fidder抓包调试神器
查看>>
619. [金陵中学2007] 传话
查看>>
rsync数据同步备份
查看>>
excel2003 颜色筛选问题
查看>>
用sql删除数据库重复的数据的方法
查看>>
scheme语言编写执行
查看>>
输出n阶“魔方阵”
查看>>
qt字符数组转ASCII(十六进制)
查看>>
学习笔记21—PS换图片背景
查看>>