代理模式用来初始化的延迟下载

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);

    }

}

 

posted @ 2014-07-26 17:52  hansongjiang8  阅读(147)  评论(0编辑  收藏  举报