最新消息

java代理模式

设计模式 金牌剑客 1613℃ 0评论

定义

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

类图

proxy

代理模式包含三个角色:

Subject:抽象主题角色,抽象主题类可以是抽象类,也可以是接口,是一个最普通的业务类型定义,无特殊要求。

RealSubject:具体主题角色,也叫被委托角色、被代理角色。是业务逻辑的具体执行者。

Proxy:代理主题角色,也叫委托类、代理类。它把所有抽象主题类定义的方法给具体主题角色实现,并且在具体主题角色处理完毕前后做预处理和善后工作。(最简单的比如打印日志)

java源代码

Subject.java

public interface Subject {
	public void operate();
}

ConcreteSubject.java

public class ConcreteSubject implements Subject {
	public void operate() {
		System.out.println("ConcreteSubject");
	}
}

Proxy.java

public class Proxy implements Subject {
	private Subject subject;
	public Proxy(Subject subject) {
		this.subject = subject;
	}
	public void operate() {
		System.out.println("doBefore");
		subject.operate();
		System.out.println("doAfter");
	}
}

Client.java

public class Client {
	public static void main(String[] args) {
		Subject subject = new Proxy(new ConcreteSubject());
		subject.operate();
	}
}

与装饰器模式的区别

装饰器模式:是对被装饰者功能的扩展,被装饰者的主要方法肯定会执行。

代理模式:是对被代理对象的控制访问,在一定的条件下代理类有权不访问被代理对象的方法。

转载请注明:QualInfo » java代理模式

喜欢 (1)or分享 (0)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址