package 设计模式;
//代理模式实现延迟加载来减小启动时间
//数据库查询接口
interface IDBQery{
public String request();
}
class DBQuery implements IDBQery
{
//创建一个DBQery非常耗时的,这里面我可以在需要DBQuery的时候在创建
public DBQuery()
{
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}//非常耗时的操作
}
@Override
public String request() {
// TODO Auto-generated method stub
return "ans";
}
}
class DBQueryProxy implements IDBQery
{
private IDBQery real=null; //被代理的对象
@Override
public String request() {
// TODO Auto-generated method stub
if(real==null) real=new DBQuery();
return real.request();
}
}
public class 代理 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
IDBQery proxy=new DBQueryProxy();//创建代理类;不初始化被代理的对象,而是延迟到真正用到这个类的时候
String ans=proxy.request();
System.out.println(ans);
}
}