设计模式之静态代理模式

设计模式之静态代理模式

什么是代理模式?

  为被代理对象提供代理以控制该对象的访问权限。

代理模式有什么好处?

  1.代理模式使用代理对象完成用户请求,屏蔽用户对真实对象的访问。

  2.被代理对象只负责自己实际的业务逻辑,不关心其他非本身的职责。并将其他事务可以通过代理类处理。

静态代理模式入门案例: 

/**
* Created by Administrator on 2018\9\3 0003.
*/
public interface Proxy {
public void sayHello(String name);
}


/**
* Created by Administrator on 2018\9\3 0003.
 * 被代理类
 */
public class Subject implements Proxy {
@Override
public void sayHello(String name) {
System.out.println(name + "静态代理模式!!!");
}
}

/**
* Created by Administrator on 2018\9\3 0003.
* 代理类和被代理类实现同一个接口,然后在代理类中注入被代理类实例对象public class RelSubject implements Proxy {
  //注入被代理类实例对象
private Subject subject;

public RelSubject(Subject subject){
this.subject = subject;
}

@Override
public void sayHello(String name) {
     //通过注入的被代理类对象调用同名方法函数,实现代理功能

subject.sayHello(name);
}
}

测试
 
/**
* Created by Administrator on 2018\9\3 0003.
*/
public class Test {
public static void main(String[] args) {
RelSubject relSubject = new RelSubject(new Subject());
relSubject.sayHello("Chinese");
}
}

静态代理模式缺陷:
  首先,静态代理需要为被代理类写一个形式上完全一样的封装类,假如被代理
接口中的方法很多,
    为每一个接口写一个代理方法也很麻烦。如果接口有变动,则被代理类和代理类都要修改,不利于系统维护;
其次,使用一些动态代理的生成方法甚至可以在运行时制定代理类的执行逻辑,从而大大提升系统的灵活性。
 
 
 
posted @ 2018-09-21 17:22  夏炳成  阅读(188)  评论(0编辑  收藏  举报