设计模式

外观模式(Facede)

2020-07-22  本文已影响0人  秀儿2020

定义

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

本质

封装交互,简化调用。

登场角色

示例代码

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


public interface Camera {
    void open();
    void takePicture();
    void close();
}


public class SamsungCamera implements Camera{
    @Override
    public void open() {
        System.out.println("打开相机");
    }

    @Override
    public void takePicture() {
        System.out.println("拍照");
    }

    @Override
    public void close() {
        System.out.println("关闭相机");
    }
}



public class MobilePhone {
    private Phone phone = new PhoneImpl();
    private Camera camera = new SamsungCamera();

    public void dail(){
        phone.dail();
    }

    public void videoChat(){
        camera.open();
        phone.dail();
    }

    public void hangup(){
        phone.hangup();
    }

    public void takePickture(){
        camera.open();
        camera.takePicture();
    }

    public void closeCamera(){
        camera.close();
    }
}

public class Main {
    public static void main(String[] args){
        MobilePhone mobilePhone = new MobilePhone();
        System.out.println("=======拍照=======");
        mobilePhone.takePickture();
        System.out.println("=======视频通话=======");
        mobilePhone.videoChat();
    }
}

运行结果

=======拍照=======
打开相机
拍照
=======视频通话=======
打开相机
拨号

功能

提供统一的封装接口,将子系统的逻辑、交互隐藏起来,为用户提供一个高层次的接口,使得系统更加易用,同事也对外隐藏了具体的实现,这样即使子系统发生了改变,用户也不会感知到,因为用户使用的是高层接口,内部的变化对用户不可见。

优点

缺点

何时使用

上一篇下一篇

猜你喜欢

热点阅读