美文网首页
外观模式(简化一群类的接口)

外观模式(简化一群类的接口)

作者: 钉某人 | 来源:发表于2017-11-17 13:19 被阅读0次
源码地址 https://github.com/DingMouRen/DesignPattern
外观模式.png
  • Facade系统对外统一接口,
  • SystemA SystemB SystemC子系统接口
定义

外观模式为子系统的一组接口提供一个一致的界面,定义一个高层接口,这个接口使得这一子系统更加容易使用。

使用场景
  • 为一个复杂子系统提供一个简单的接口。(引入的第三方SDK)
  • 在构建一个有层次结构的子系统时
协作

客户端通过发送请求给Facade的方式与子系统通讯,Facade将这些消息转发给适当的子系统对象。尽管是子系统在做实际工作,但是Facade模式本身必须将它的接口转换成子系统的接口

举个栗子

假设我们手机只能打电话和拍照。那么通过系统和拍照系统就是所谓的子系统,里面有复杂的逻辑,但是我们不可能去搞懂系统的细节,我们只要能打电话和拍照就行了,我们需要一个外观类帮我们做一些事情,也就是封装,你手里拿着的手机哦。

//子系统的抽象接口:通话系统
public interface Phone {
    //打通话系统
    void dail();
    //关闭通话系统
    void hangup();
}
//通话系统的具体实现类
public class PhoneImpl implements Phone {
    @Override
    public void dail() {
        System.out.println("通话系统的打电话功能");
    }

    @Override
    public void hangup() {
        System.out.println("通话系统的关闭通话");
    }
}

//Facade类:外观类
public class MobilePhone {
    private Phone phone = new PhoneImpl();
    private Camera camera = new SonyCamera();

    //用手机打电话
    public void dail(){
        phone.dail();
    }
    //挂断电话
    public void hangup(){
        phone.hangup();
    }
    //用手机拍照片
    public void takePhoto(){
        camera.open();
        camera.takePhoto();
    }
    //退出相机
    public void closeCamera(){
        camera.close();
    }
}

使用
   public static void main(String[] args) {
        //拿到手机对象
        MobilePhone phone = new MobilePhone();
        //随便打电话或者去拍照
        phone.takePhoto();
    }
总结

优点:

  • 对客户端隐藏子系统的细节,减少客户对子系统的耦合
  • 外观类对子系统的接口封装,使得系统易于使用
    缺点:
  • 一般会造成外观类的接口膨胀,外观类的api接口很多,增加用户的使用成本
  • 外观类没遵循开闭原则,当业务变化时,可能需要直接修改外观类

相关文章

  • 外观模式(简化一群类的接口)

    Facade系统对外统一接口, SystemA SystemB SystemC子系统接口 定义 外观模式为子系统的...

  • 适配器模式和外观模式

    适配器模式,将类的接口转化为想要的接口样式。 外观模式,让对象包装起来,以简化接口。 鸭子## 鸭子,依然是鸭子的...

  • 设计模式(八)外观模式

    定义 外观模式提供类一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。 类图...

  • 设计模式之外观模式(结构型)

    [TOC] 一、模式定义 外观模式:外观模式就是提供一个统一的接口,用来访问子系统的一群接口。外观模式定义了一个高...

  • 二十、外观模式(Facade Pattern)

    1. 何为外观模式 外观模式是对多个对象中的多个方法进行封装,外观模式是对多个接口进行整合,以简化用户调用的方式。...

  • 外观模式

    外观模式(Facade) 外观模式: 提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让...

  • 设计模式(5)——外观模式

    外观模式 提供统一的接口,用来访问子系统中的一群接口。外观模式将一个或数个类的复杂的一切都隐藏在背后,只显露一个整...

  • 外观模式(Faced Pattern)

    外观模式:提供一个统一的接口,用来访问子系统中的一群接口。外观模式定义了一个高层的接口,让子系统更容易使用。 外观...

  • 门面模式及其应用

    一、模式介绍 门面模式又称为外观模式,即提供一个统一的接口或者类,用来访问各个子系统、子模块中的一群接口。在日常开...

  • 外观模式

    1.外观模式概念 适配器模式(Adapter Pattern)提供一个统一的接口,用来访问子系统中的一群接口。外观...

网友评论

      本文标题:外观模式(简化一群类的接口)

      本文链接:https://www.haomeiwen.com/subject/wyqjvxtx.html