外观模式

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

设计模式的3大类:

  • 创建型模式(5种)建造者模式,单例模式,工厂方法模式,抽象工厂模式,原型模式。
  • 结构性模式(7种)适配器模式,装饰模式,代理模式,外观模式,桥接模式,组合模式,享元模式。
  • 行为型模式(11种)策略模式,模板方法模式,观察者模式,迭代器模式,责任链模式,命令模式,备忘录模式,状态模式,访问者模式,中介者模式,解释器模式。

1. 什么是外观模式

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

  • Facade:外观类,知道哪些子系统负责处理请求,将客户端的请求代理给适当的子系统对象。
  • Subsystem:子系统类,可以有一个或者多个子系统。实现子系统的功能,处理外观类指派的任务,注意子系统类不含有外观类的引用。

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();
    }
}

运行结果:


外观模式_第1张图片
image.png

3. 外观模式优缺点

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

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

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

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

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

参考:

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

你可能感兴趣的:(外观模式)