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、代理模式的扩展: