内容简介:设计模式之静态代理
一、代理模式的作用
代理模式的作用是:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到 中介 的作用。
二、代理模式一般涉及到的角色
抽象角色:声明真实对象和代理对象的共同接口。
代理角色:代理对象角色内部含有对真实对象的引用,从而可以操作真实对象,同时代理对象提供与真实对象相同的接口以便在任何时刻都能够代替真实对象。同时,代理对象可以在执行真实对象操作时,附加其他的操作,相当于对真实对象进行封装。
真实角色:代理角色所代表的真实对象,是我们最终要引用的对象。
例证:以下程序使用静态代理实现一个大写字母的转换功能。
接口类ISomeService:
package com.ietree.basicskill.designpattern.staticproxy;
/**
* 接口类
*
* @author Root
*/
public interface ISomeService {
String doFirst();
void doSecond();
}
实现类SomeServiceImpl:
package com.ietree.basicskill.designpattern.staticproxy;
/**
* 实现类
*
* @author Root
*/
public class SomeServiceImpl implements ISomeService {
@Override
public String doFirst() {
System.out.println("执行doFirst()...");
String result = "abcde";
return result;
}
@Override
public void doSecond() {
System.out.println("执行doSecond()...");
}
}
代理类SomeServiceProxy:
package com.ietree.basicskill.designpattern.staticproxy;
/**
* 代理类
*
* @author Root
*/
public class SomeServiceProxy implements ISomeService {
private ISomeService target;
public SomeServiceProxy() {
super();
target = new SomeServiceImpl();
}
@Override
public String doFirst() {
String result = target.doFirst();
// 实现了将小写字母转换为大写字母
return result.toUpperCase();
}
@Override
public void doSecond() {
target.doSecond();
}
}
测试类Main:
package com.ietree.basicskill.designpattern.staticproxy;
public class Main {
public static void main(String[] args) {
ISomeService service = new SomeServiceProxy();
String result = service.doFirst();
System.out.println(result);
service.doSecond();
}
}
三、总结
如果要按照上述的方式(静态代理)使用代理模式,那么真实角色必须是实现已经存在的,并将其作为代理对象的内部属性。
但是实际使用时,一个真实角色必须对应一个代理角色,但如果大量使用会导致类的急剧膨胀;此外,如果事先并不知道真实角色,该如何使用代理呢?这个问题可以通过 Java 的动态代理类 来解决。
本文永久更新链接地址 : http://www.linuxidc.com/Linux/2017-06/144643.htm
以上所述就是小编给大家介绍的《设计模式之静态代理》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Coming of Age in Second Life
Tom Boellstorff / Princeton University Press / 2008-04-21 / USD 29.95
The gap between the virtual and the physical, and its effect on the ideas of personhood and relationships, is the most interesting aspect of Boellstorff's analysis... Boellstorff's portrayal of a virt......一起来看看 《Coming of Age in Second Life》 这本书的介绍吧!