设计模式:代理模式(Proxy)

原创 2016年08月31日 17:12:28

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

仅仅一句话自然是说明不了代理模式是什么,我们先看看代码例子,什么是代理:

举一个栗子吧,假设有个人家里有困难,A同学知道了这个人的情况,想捐点钱给他,但是又想做好事不留名,于是A同学让B同学帮忙把钱给这个人。


那么我们先建一个People类:

class People {
	String name;

	People(String name) {
		this.name = name;
	}
}

然后写一个代理接口,我们这个栗子围绕捐钱,所以这个接口有一个送钱的方法:

interface Proxy {
	void giveMoney();
}

两个同学分别实现该接口:

class StudentA implements Proxy {
	private Proxy p;

	StudentA(People pople) {
		this.p = new StudentB(pople);
	}

	@Override
	public void giveMoney() {
		p.giveMoney();
	}

}

class StudentB implements Proxy {
	People p;

	StudentB(People p) {
		this.p = p;
	}

	@Override
	public void giveMoney() {
		System.out.println(p.name+"钱给你,不用谢,我叫红领巾");
	}

}

然后调用:

public static void main(String[] args) {
		//这个有困难的人叫做大众脸
		People dazhonglian=new People("大众脸");
		StudentA a=new StudentA(dazhonglian);
		a.giveMoney();
	}

运行结果:

大众脸,钱给你,不用谢,我叫红领巾


这下b同学不用直接给大众脸送钱了~


我们把同学A叫做代理,同学B叫做真实需求。AB都实现了Proxy,这样就可以在使用真实需求的时候,调用代理。


代理模式一般会在一下几个场合用到:

1.远程代理,为一个对象在不同的地址空间提供局部代表。这样就可以隐藏一个对象存在于不同地址空间的事实。

2.虚拟代理,根据需要创建开销很大的对象。通过它来存放实例化很长的真实对象。在真实对象还没有完全实例化之前,可以先用代理对象代替。

3.安全代理,用来控制真实对象访问时的权限。

4.智能指引,当调用真实对象时,代理处理另外一些事情。


代理对象就是真是对象的代表。











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

相关文章推荐

存储过程与SQL语句对比

存储过程与SQL语句对比 优势: 1、提高性能 SQL语句在创建过程时进行分析和编译。 存储过程是预编译的,在首次运行一个存储过程时,查询优化器对其进行分析、优化,并给出最终被存在系统表...

red5+java打造直播平台系列 初级

red5+java打造直播平台系列 初级 前言:如今各式各样的直播平台,像雨后春笋般冒出来。本系列重零开始,基于RED5为服务器,通过JAVA编写后台实现直播平台一些列主流的功能。 如主播开播,用户观...

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

这段时间一直忙于期末考试,好久没来博客园了,现在好了,终于考完了,也该过上正常的日子了。开学就是大四的学生了,时间过的可是真快啊,转眼间大学四年已经接近尾声了。回想大学这三年,成绩还可以吧(年级前10...

JAVA设计模式之 代理模式【Proxy Pattern】

一、概述     给某一个对象提供一个代理,并由代理对象来完成对原对象的访问。代理模式是一种对象结构型模式。 二、适用场景     当无法直接访问某个对象或访问某个对象存在困难时可以通过一个代...

浅谈Java设计模式(八)代理模式(Proxy)

前言: 其实每个模式名称就表明了该模式的作用,代理模式就是多一个代理类出来,替原对象进行一些操作,比如我们在租房子的时候回去找中介,为什么呢?因为你对该地区房屋的信息掌握的不够全面,希望找一个更熟悉的...

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

参考http://blog.csdn.net/jianghuxiaoxiami/article/details/3403924 1.代理模式   代理模式的作用是:为其他对象提供一种代理以控制...

c++设计模式-----代理模式proxy

代理模式:                                                        意图: 为其他对象提供一种代理以控制对这个对象的访问。 适用性: 在需要用...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:设计模式:代理模式(Proxy)
举报原因:
原因补充:

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