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

2017-11-17  本文已影响0人  钉某人
源码地址 https://github.com/DingMouRen/DesignPattern
外观模式.png
定义

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

使用场景
协作

客户端通过发送请求给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();
    }
总结

优点:

上一篇下一篇

猜你喜欢

热点阅读