zoukankan      html  css  js  c++  java
  • 外观模式

    个人博客

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

    输出结果

    打开相机
    拍照
    -->视频聊天接通中
    打开相机
    打电话
    
  • 相关阅读:
    JSON.parse()和JSON.stringify()
    MySql 只能访问localhost 和 127.0.0.1访问 不能通过其他IP访问
    JavaScript 严格模式
    设计模式学习--单例模式
    golang 读写文件(一)
    eclipse 快捷键收藏
    Swift网络封装库Moya中文手册之Authentication
    Swift网络封装库Moya中文手册之Endpoints
    Swift网络封装库Moya中文手册之Plugins
    Swift网络封装库Moya中文手册之Providers
  • 原文地址:https://www.cnblogs.com/milovetingting/p/12329529.html
Copyright © 2011-2022 走看看