设计模式4:代理模式

当客户端代码直接访问对象存在某些问题时,我们会考虑在对象和客户端代码之间加一个访问层,也就是代理模式。

代理模式为其他对象提供一种代理以控制对这个对象的访问。

来看UML图:

代理类与真实类共同实现了相同的接口,这样做可以控制特定方法的输入输出一致。

代理类包含了真实类作为其成员变量。

来看代码:

public interface ISubject {
	public void sayHello();
}

ISubject接口。

public class RealSubject implements ISubject {

	@Override
	public void sayHello() {
		// TODO Auto-generated method stub
		System.out.println("Hello!");
	}

}

真实类实现了sayHello方法。

public class Proxy implements ISubject {
	
	private RealSubject real = null;
 
	@Override
	public void sayHello() {
		// TODO Auto-generated method stub
		if(real == null){
			real = new RealSubject();
		}
		real.sayHello();
	}

}

代理类内部包含真实类对象,显式调用真实类对象的方法。

public class ProxyDemo {
	public static void main(String[] args) {
		Proxy proxy = new Proxy();
		proxy.sayHello();
	}
}

  

原文地址:https://www.cnblogs.com/zcy-backend/p/6670687.html