外观模式

个人博客

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

}

输出结果

打开相机
拍照
-->视频聊天接通中
打开相机
打电话
原文地址:https://www.cnblogs.com/milovetingting/p/12329529.html