代理模式()
代理模式的实现和使用
基于以上设计IDBQuery的实现如下它只有一个request()方法
public interface IDBQuery {
String request()
}
图 代理模式的一种实现
DBQuery实现如下它是一个重量级对象构造会比较慢
public class DBQuery implements IDBQuery{
public DBQuery(){
try {
Threadsleep() //可能包含数据库连接等耗时操作
} catch (InterruptedException e) {
eprintStackTrace()
}
}
@Override
public String request() {
return request string;
}
}
代理类DBQueryProxy是轻量级对象创建很快用于替代DBQuery的位置
public class DBQueryProxy implements IDBQuery {
private DBQuery real=null;
@Override
public String request() {
//在真正需要的时候才创建真实对象创建过程可能很慢
if(real==null)
real=new DBQuery()
//在多线程环境下这里返回一个虚假类类似于Future模式
return realrequest()
}
}
最后主函数如下它引用IDBQuery接口并使用代理类工作
public class Main {
public static void main(String args[]){
IDBQuery q=new DBQueryProxy() //使用代理
qrequest() //在真正使用时才创建真实对象
}
}
注意将代理模式用于实现延迟加载可以有效地提升系统的启动速度对改善用户体验有很大的帮助
返回目录Java程序性能优化让你的Java程序更快更稳定
编辑推荐
Java程序设计培训视频教程
JEE高级框架实战培训视频教程
JME移动开发实战教学视频
Visual C++音频/视频技术开发与实战
Oracle索引技术
ORACLEG数据库开发优化指南