设置模式之 -> 代理模式之自定义实现

 1.主题接口

package javatuning.ch2.proxy;

public interface IDBQuery {
	String request();
}

 2.真实主题

package javatuning.ch2.proxy;

public class DBQuery implements IDBQuery{
	public DBQuery(){
		//可能包含数据库连接等耗时操作
		try {
			Thread.sleep(1000);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
	}
	@Override
	public String request() {
		return "request string";
	}
}

 3.代理类

package javatuning.ch2.proxy;

public class DBQueryProxy implements IDBQuery {
	private DBQuery real=null; 
	@Override
	public String request() {
		//在真正需要的时候 ,才创建真实对象,创建过程可能很慢
		if(real==null)
			real=new DBQuery();
		//在多线程环境下,这里返回一个虚假类,类似于Future模式
		return real.request();
	}
}

 4.测试

package javatuning.ch2.proxy;

public class Main {
	public static void main(String args[]){
		IDBQuery q=new DBQueryProxy();	//使用代理
		q.request();					//在真正使用时才创建真实对象
	}
}
发布了176 篇原创文章 · 获赞 1 · 访问量 7182

猜你喜欢

转载自blog.csdn.net/qq_37769323/article/details/104173212