• 外观模式


    个人博客

    http://www.milovetingting.cn

    外观模式

    模式介绍

    外观模式在开发过程中的运用频率非常高。通过一个外观类使得整个系统的接口只有一个统一的高层接口,这样能够降低用户的使用成本,也对用户屏蔽了很多实现细节。外观模式是我们封装API的常用手段。

    模式定义

    要求一个子系统的外部与内部通信必须通过一个统一的对象进行。

    使用场景

    1. 为一个复杂子系统提供一个简单接口。

    2. 当需要构建一个层次结构的子系统,用外观模式定义子系统中每层的入口点。

    简单使用

    定义Phone接口

    public interface Phone {
    	void dial();
    	void hangup();
    }
    

    定义Phono实现类

    public class PhoneImpl implements Phone {
    
    	@Override
    	public void dial() {
    		System.out.println("打电话");
    	}
    
    	@Override
    	public void hangup() {
    		System.out.println("挂断");
    	}
    
    }
    

    定义Camera接口

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

    定义Camera实现类

    public class CameraImpl implements Camera {
    
    	@Override
    	public void open() {
    		System.out.println("打开相机");
    	}
    
    	@Override
    	public void takePhoto() {
    		System.out.println("拍照");
    	}
    
    	@Override
    	public void close() {
    		System.out.println("关闭相机");
    	}
    
    }
    

    定义MobilePhone类

    public class MobilePhone {
    
    	private Phone mPhone = new PhoneImpl();
    
    	private Camera mCamera = new CameraImpl();
    
    	public void dail() {
    		mPhone.dial();
    	}
    
    	public void hangup() {
    		mPhone.hangup();
    	}
    
    	public void takePhoto() {
    		mCamera.open();
    		mCamera.takePhoto();
    	}
    
    	public void closeCamera() {
    		mCamera.close();
    	}
    
    	public void videoChat() {
    		System.out.println("-->视频聊天接通中");
    		mCamera.open();
    		mPhone.dial();
    	}
    
    }
    

    调用

    public class Main {
    
    	public static void main(String[] args) {
    		MobilePhone mobilePhone = new MobilePhone();
    		mobilePhone.takePhoto();
    		mobilePhone.videoChat();
    	}
    
    }
    

    输出结果

    打开相机
    拍照
    -->视频聊天接通中
    打开相机
    打电话
    
  • 相关阅读:
    网上搜索整理的前端开发工程师面试题附答案
    Python-RabbitMQ-topic(细致消息过滤的广播模式)
    Python-RabbitMQ-direct(广播模式)
    Python-RabbitMQ-fanout(广播模式)
    rabbitmq中关于exchange模式type报错
    Python-RabbitMQ(持久化)
    Python-RabbitMQ(简单发送模型)
    python-gevent模块实现socket大并发
    python-gevent模块(自动切换io的协程)
    python-greenlet模块(协程)
  • 原文地址:https://www.cnblogs.com/milovetingting/p/12329529.html
Copyright © 2020-2023  润新知