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

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



    }



}

 

你可能感兴趣的:(代理模式)