Java设计模式设计模式Android开发经验谈

外观模式

2018-03-26  本文已影响51人  某人_Valar

作者:某人_Valar
如需转载请保留原文链接;

设计模式的3大类:

1. 什么是外观模式

外观模式隐藏了系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。
一般在外观模式中有下面几个角色:

2. 外观模式的简单实现

(1)子系统类
//子系统招式
public class Zhaoshi {
    public void TaiJiQuan(){
        System.out.println("使用招式太极拳");
    }
    public void QiShangQuan(){
        System.out.println("使用招式七伤拳");
    }
    public void ShengHuo(){
        System.out.println("使用招式圣火令");
    }
}
//子系统内功
public class NeiGong {
    public void JiuYang(){
        System.out.println("使用九阳神功");
    }
    public void QianKun(){
        System.out.println("使用乾坤大挪移");
    }
}
//子系统经脉
public class JingMai {
    public void jingmai(){
        System.out.println("开启经脉");
    }
}
(2)外观类

初始化外观类的同时将各个子系统类创建好,并进行搭配。

//外观类张无忌
public class ZhangWuJi {
    private JingMai jingMai;
    private Zhaoshi zhaoshi;
    private NeiGong neiGong;

    public ZhangWuJi() {
        jingMai = new JingMai();
        zhaoshi = new Zhaoshi();
        neiGong = new NeiGong();
    }

    /**
     *  使用乾坤大挪移
     */
    public void Qiankun(){
        jingMai.jingmai();// 开启经脉
        neiGong.QianKun(); //使用内功乾坤大挪移
    }

    /**
     * 使用七伤拳
     */
    public void Qishang(){
        jingMai.jingmai();// 开启经脉
        neiGong.JiuYang(); //使用内功九阳神功
        zhaoshi.QiShangQuan(); // 使用招式七伤拳
    }
}
(3)测试类

客户端调用

public class Test {
    public static void main(String[] args){
        ZhangWuJi zhangWuJi = new ZhangWuJi();
        //张无忌使用乾坤大挪移
        zhangWuJi.Qiankun();
        //张无忌使用七伤拳
        zhangWuJi.Qishang();
    }
}

运行结果:


image.png

3. 外观模式优缺点

优点: 1、减少系统相互依赖。 2、提高灵活性。 3、提高了安全性。

缺点:不符合开闭原则,如果要改东西很麻烦,继承重写都不合适。

4.外观模式与装饰模式的区别

装饰模式:封装一个对象,并提供额外的行为,用组合的方式来替代继承以扩展类的功能。

外观模式:封装许多对象,简化它们的接口,定义了一个更高层的接口,使得子系统更容易被调用。

参考:

《Android进阶之光》
外观模式-菜鸟教程

上一篇 下一篇

猜你喜欢

热点阅读