码迷,mamicode.com
首页 > 其他好文 > 详细

静态代理

时间:2016-08-24 00:52:50      阅读:99      评论:0      收藏:0      [点我收藏+]

标签:

public interface Subject {

    public void Rread();
}
public class ReadSubject implements Subject{
    //这里是单例用法,这个类主要是为了给ResultSubject提供Subject实例
    static ReadSubject rs=new ReadSubject();
    private ReadSubject(){
        
    }
    public static ReadSubject getReadSubject(){
        return rs;
    }
    public static Subject getSubject(){
        return new ReadSubject();
    }

    @Override
    public void Rread() {
        System.out.println("生成方法的中间类");
    }
}
public class StaticProxy implements Subject{
    //这个静态代理类用来重写接口Subject的Rread方法
    private Subject rs=null;
    //这个是构造函数为了使需要重写类与该类建立联系,达到重写Rread的目的
    //具体是new StaticProxy(rs.getSubject())
    public StaticProxy(Subject rs){
        this.rs=rs;
         
    }
    @Override
    public void Rread() {
        System.out.println("hello world");
    }

}
public class ResultSubject{
    ReadSubject rs=ReadSubject.getReadSubject();
    public  Subject s=null;
    public ResultSubject(){
        s=rs.getSubject();//这样将不会重写Subject的Rread方法
    
    }
}
public class ResultSubject{
    ReadSubject rs=ReadSubject.getReadSubject();
    public  Subject s=null;
    public ResultSubject(){
        //这样利用静态代理可以达到重写的目的
        s=new StaticProxy(rs.getSubject());
    
    }
}
public class Test {
    public static void main(String[] args) {
//        Subject subject=new StaticProxy(new ResultSubject());
//        subject.Rread();
        ResultSubject rs=new ResultSubject();
     Subject s=rs.s;   s.Rread(); } }
运行结果是hello world

 可见我们确实重写了Subject接口的Rread方法

这里主要是在StaticProxy类中我们加入了Subject接口实例赋值,在ResultSubject类中我们利用StaticProxy类来引入Subject接口实例实例,所以从ResultSubject类 中得到的Subject接口实例都经过StaticProxy类   从而重写了Rread方法

这里主要是为了解决例如:在连接数据库时,自己写DAO时   只能利用DriverManager.getConnection来获得Connection接口实例,又想在接下来的操作中重写close时会用到。

静态代理

标签:

原文地址:http://www.cnblogs.com/lslqm520/p/5801367.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!