java 设计模式之代理模式(Proxy)

版权声明:尊重原创,码字不易,转载需博主同意。 https://blog.csdn.net/qq_34626097/article/details/83477876

java 设计模式之代理模式(Proxy)

1. 概述

  1. 为其他对象提供一种代理以控制对这个对象的访问

2.适用性

  1. 远程代理(RemoteProxy)为一个对象在不同的地址空间提供局部代表。

  2. 虚代理(VirtualProxy)根据需要创建开销很大的对象。

  3. 保护代理(ProtectionProxy)控制对原始对象的访问。

  4. 智能指引(SmartReference)取代了简单的指针,它在访问对象时执行一些附加操作。

  5. 上面的不一一写出来,但抗议作为一个思想,先了解。

3.使用知识

  1. 接口的多态性,通过两个interface接口多态的应用
  2. 构造器代理类中新建被代理类
  3. 虚拟方法调用

4.核心思想

  1. 不直接让被代理类去完成某种功能,而是通过代理类去控制被代理类去执行自己的某个方法,如:被代理类通过代理类去买房,虽然买房子的看起来是由代理类买的,但真正付钱的人是被代理类,房证的名字也是代理类的。简单的理解为一个中介的功能。

5. 类图

类图

6.dome

//接口的应用:代理模式
public class TestProxy {
	public static void main(String[] args) {
		Object obj = new ProxyObject();
		obj.action();
	}
	/*输出结果
	*代理类创建成功
	*代理类开始执行
	*++++被代理类开始执行++++
	*++++具体的操作++++
	*++++被代理类执行完毕++++
	*代理类执行完毕
	/
}
interface Object{
	void action();
}
//代理类
class ProxyObject implements Object{
	Object obj;

	public ProxyObject() {
		System.out.println("代理类创建成功");
		obj  = new ObjectImpl();
	}
	
	public void action() {
		System.out.println("代理类开始执行");
		obj.action();
		System.out.println("代理类执行完毕");
	}
}

//被代理类
class ObjectImpl implements Object{

	
	public void action() {
		System.out.println("++++被代理类开始执行++++");
		System.out.println("++++具体的操作++++");
		System.out.println("++++被代理类执行完毕++++");
	}

}

猜你喜欢

转载自blog.csdn.net/qq_34626097/article/details/83477876