Java 外观模式

外观模式

概述

  • 在实际开发中,我们都会用到外观模式,它通过一个外观类使整个系统的结构只有一个统一的高层接口,这样降低用户的使用成本。
  • 外观模式的精髓在于封装二字,通过一个高层次结构为用户提供统一的API入口,使得用户通过一个类型就基本能够操作整个系统,这样减少了用户的使用成本,提供系统的灵活性。

角色介绍

  • 外观类:统一管理子系统,负责调用子系统的方法。
  • 子系统类:实现子系统的功能,处理外观类指派的任务。

基本实现

子系统类

public interface Camera {
    
    
    void open();
    void takePicture();
    void close();
}
public interface Phone {
    
    
    void dail();
    void hangup();
}
public class CameraImpl 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 PhoneImpl implements Phone {
    
    
    @Override
    public void dail() {
    
    
        System.out.println("打电话");
    }

    @Override
    public void hangup() {
    
    
        System.out.println("电话挂断");
    }
}

外观类

/**
 * 假设移动电话有2大子系统:拨号系统和摄像头系统
 * 根据不同功能自由组合
 */
public class MobilePhone {
    
    
    private Phone mPhone = new PhoneImpl();
    private Camera mCamera = new CameraImpl();

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

    public void videoChat() {
    
    
        mCamera.open();
        mPhone.dail();
    }

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

    public void takePicture() {
    
    
        mCamera.open();
        mCamera.takePicture();
    }

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

使用

public class Demo {
    
    
    public static void main(String[] args) {
    
    
        MobilePhone mobilePhone = new MobilePhone();
        mobilePhone.takePicture();
        mobilePhone.videoChat();
    }
}
打开摄像头
拍照
打开摄像头
打电话

猜你喜欢

转载自blog.csdn.net/qq_14876133/article/details/112367693
今日推荐