代理模式

原创 2016年08月29日 00:56:21

1.定义

代理模式为另一个对象提供一个替身或占位符以控制对这个对象的访问。

2.角色

(1)抽象角色(Subject):声明了目标对象和代理对象的共同接口

(2)代理角色(Proxy):代理对象内部含有目标对象的引用

(3)真实角色(RealSubject):定义了代理对象所代表的真实对象

3.应用形式

1) 远程代理(Remote  Proxy):管理客户和远程对象之间的交互;
2) 虚拟代理(Virtual Proxy):控制访问实例化开销大的对象; 
3) 保护代理(Protection Proxy):基于调用者控制对象方法的访问;
4) 智能指引(Smart Reference):取代了简单的指针,它在访问对象时执行一些附加操作。
5) 写时拷贝(克隆)代理(Copy-on-write Proxy):其实是虚拟代理的一个分支,提供了拷贝大对象的时候只有在对象真正变化后才会进行拷贝(克隆)的操作,即延迟拷贝。


4.


public interface Subject {
	public void request();
}
public class RealSubject implements Subject {
	@Override
	public void request() {
		System.out.println("From real subject.");
	}
}
public class Proxy implements Subject {
	private RealSubject realSubject;
	@Override
	public void request() {
		System.out.println("before");
		if (realSubject == null) {
			realSubject = new RealSubject();
		}
		realSubject.request();
		System.out.println("after");
	}
}
public class Client {
	public static void main(String[] args) {
		Subject subject = new Proxy();
		subject.request();
	}
}
5.区别

(1)

装饰者为对象增加行为

代理是控制对象的访问

(2)

适配器会改变对象适配的接口

代理则实现相同的接口

6.小结

1) 代理作为调用着和真实对象的中间层,降低了模块间和系统的耦合性;

2)可以以一个小对象代理一个大对象,达到优化系统提高运行速度的目的;

3)proxy并不一定要求保持接口的一致性,只要能够实现间接控制,有时候损及一些透明性是可以接受的。




版权声明:本文为博主原创文章,未经博主允许不得转载。

浅析JavaScript设计模式——代理模式

代理模式 为一个对象提供一个代用品或占位符,以便控制对它的访问 好久没有写设计模式的文章了 今天要写的代理模式可能内容要多一些 代理模式非常有用,代理模式也分为很多很多种,我只谈一些常见并且...
  • q1056843325
  • q1056843325
  • 2016年11月17日 20:33
  • 1019

谈谈JAVA的代理模式认识 一——为什么使用代理模式

一、中介隔离作用     代理模式,第一次接触它,是在学习.Net的时候看的一本书,叫做《大话设计模式》,至今已快三年了。相信看过这本书的同学们,都记得书中的代理模式,就是为他人做嫁衣裳的故事。好,我...
  • wangyongxia921
  • wangyongxia921
  • 2015年05月28日 16:24
  • 21853

Android设计模式之代理模式 Proxy

一.概述 代理模式也是平时比较常用的设计模式之一,代理模式其实就是提供了一个新的对象,实现了对真实对象的操作,或成为真实对象的替身.在日常生活中也是很常见的.例如A要租房,为了省麻烦A...
  • l2show
  • l2show
  • 2015年07月28日 22:14
  • 20601

状态模式--策略模式--代理模式

状态模式:意图:   允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。适用性:   在下面的两种情况下均可使用 S t a t e模式:   • 一个对象的行为取决于它的...
  • lonewolf521125
  • lonewolf521125
  • 2015年05月19日 11:43
  • 903

代理模式的简单例子

【代理模式应用场景举例】比如在玩“极品飞车”这款游戏,如果游戏者手中的金钱达到了一定的数量就可以到车店买一部性能更高的赛车,那么这个卖车的“车店”就是一个典型的“汽车厂家”的“代理”,他为汽车厂家“提...
  • lishaojun0115
  • lishaojun0115
  • 2016年02月26日 11:51
  • 1673

如何解决代理模式详解的原理详解

我特意将本系列改了下名字,原名是《设计模式学习之路》,原因是因为之前写过一篇《spring源码学习之路》,但是我感觉本次写二十三种设计模式,更多的还是分享给各位自己的理解,所以感觉学习之路有点不合适,...
  • t93z5uusca
  • t93z5uusca
  • 2017年05月10日 03:38
  • 382

【学习笔记javascript设计模式与开发实践(代理模式)----6】

第6章代理模式  代理模式是为一个对象提供一个代用品或占位符,以便控制对它的访问。 代理模式是一种非常有意义的模式,在生活中可以找到很多代理模式的场景。比如明星都有经济人作为代理。如果想请明星来办一场...
  • pigpigpig4587
  • pigpigpig4587
  • 2015年12月16日 17:07
  • 1115

【设计模式之三:模式对比】外观模式、代理模式与中介者模式的区别

外观模式 个人理解:         子类继承外观类的所有属性方法,客户端只需要跟外观类进行交流,实现了对所有子类的封装。 没有使用外观类 如图:         应用外观类 ...
  • cangchen
  • cangchen
  • 2015年04月08日 23:05
  • 2767

设计模式之代理模式 c++实现以及详解

代理模式分为四类:远程代理,虚代理,保护代理和智能引用。
  • hnust_xiehonghao
  • hnust_xiehonghao
  • 2014年05月22日 14:16
  • 3727

代理模式使用场合与注意事项

代理 模式的定义:      为其它对象提供一种代理以控制这个对象的访问--《设计模式》GOF 注意事项: 1. 接口并不是必须的,大多数情况下,我们为了保持对对象操作的透明性,并强制实现类实现代理类...
  • dzta831121
  • dzta831121
  • 2015年11月17日 16:50
  • 615
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:代理模式
举报原因:
原因补充:

(最多只允许输入30个字)