静态代理

Java 静态代理

静态代理通常用于对原有业务逻辑的扩充。比如持有二方包的某个类,并调用了其中的某些方法。然后出于某种原因,比如记录日志、打印方法执行时间,但是又不好将这些逻辑写入二方包的方法里。所以可以创建一个代理类实现和二方方法相同的方法,通过让代理类持有真实对象,然后在原代码中调用代理类方法,来达到添加我们需要业务逻辑的目的。

这其实也就是代理模式的一种实现,通过对真实对象的封装,来实现扩展性。

一个典型的代理模式通常有三个角色,这里称之为**代理三要素**

 

共同接口

public interface abstarct {
    public void request();
}

真实对象

public class Zsubject implements abstarct {
    public void request() {
        System.out.println("今天你学习了吗?");
    }
}

代理对象

public class ProxySubject implements abstarct{

    private Zsubject zsubject=new Zsubject();

    public Zsubject getZsubject() {
        return zsubject;
    }

    public void setZsubject(Zsubject zsubject) {
        this.zsubject = zsubject;
    }

    public void request() {
        System.out.println("Before==之前");

        zsubject.request();
        System.out.println("After==之后");

    }
}

运行代码

public class Test20180306 {
    //静态代理
    @Test
    public void Test01(){
        //真实主题
        Zsubject zu=new Zsubject();
        //代理主题
        ProxySubject pro=new ProxySubject();

        pro.setZsubject(zu);
        pro.request();

    }
}

这种代理模式也最为简单,就是通过proxy持有realObject的引用,并进行一层封装。

静态代理的优点

先看看代理模式的优点: 扩展原功能,不侵入原代码。

 

静态代理的缺点:

需要存在物理文件,如果有多个静态代理的话,就会有很多个物理文件

posted @ 2018-03-06 18:43  风骚少年  阅读(160)  评论(0)    收藏  举报
AmazingCounters.com