JAVA设计模式--代理模式

JAVA设计模式--代理模式

例子:

在现实生活中,我们有的时候并不会真是的参与到一个活动中,就可以完成一件事情。例如打官司(找代理律师)、点外卖等。

以下是抽象的是实现代理的代码,很容易理解。

/***
 * Subject抽象主题类
 * 定义接口,创建request方法
 *
 */
public interface Subject {
    void request();
}

 

/**
 * RealSubject具体主题类
 * 实现Subject接口
 */
public class RealSubject implements Subject {
    @Override
    public void request() {
        // 具体的业务逻辑
    }
}

 

/***
 * Proxy代理类
 */
public class Proxy implements Subject {
    //要代理哪个实现类
    private Subject subject=null;
    
    //默认被代理者
    public Proxy() {
        this.subject = new Proxy();
    }
    
    //通过构造函数传递参数
    public Proxy(Subject subject) {
        super();
        this.subject = subject;
    }

    @Override
    public void request() {
        // TODO Auto-generated method stub
        this.before();
        this.subject.request();
        this.after();
    }
    
    //预处理方法
    private void after() {
        // TODO Auto-generated method stub
    }
    
    //善后处理方法
    private void before() {
        // TODO Auto-generated method stub
    }
}

 

代理模式的应用:

  1、代理模式的优点:

  职责清晰:真实的角色就是就是实现实际的业务逻辑,不用关心其他非本职的业务,通过后期的代理完成一件事务,结果就是编程的简洁清晰。

  高扩展性:具体主题角色是随时都会发生变化的,只要他实现了接口,我们的代理类完全就可以在不做任何修改的情况下使用。

  智能化:Struts将表单元素映射到对象上。

  2、代理模式的扩展:

posted @ 2018-04-19 22:08  Hello,波仔  阅读(84)  评论(0编辑  收藏  举报