静态代理
代理是一种设计模式,提供了对目标对象另一种访问方式。。。可以对其功能进行扩展(符合OCP原则)
我们先来看静态代理。。(1)静态代理中代理对象必须和目标对象实现统一的接口
先定义接口类 IStudent
1 package cn.secol.static_proxy; 2 3 public interface IStudent { 4 void learn(); 5 }
目标对象类StudentImp
1 package cn.secol.static_proxy; 2 /** 3 * 目标对象 4 * @author Administrator 5 * 6 */ 7 public class StudentImp implements IStudent { 8 9 @Override 10 public void learn() { 11 System.out.println("演示静态代理"); 12 } 13 14 }
代理对象类StudentProxy
package cn.secol.static_proxy; /** * 代理对象 * @author Administrator * */ public class StudentProxy implements IStudent { //目标对象的引用 private StudentImp stu; public StudentProxy(StudentImp stu) { this.stu = stu; } @Override public void learn() { System.out.println("处理前code..."); stu.learn(); System.out.println("处理后code..."); } }
测试类TestDemo
package cn.secol.static_proxy;
import org.junit.Test;
/**
* 测试类
* @author Administrator
*
*/
public class TestDemo {
@Test
public void fun1(){
StudentProxy proxy = new StudentProxy(new StudentImp());
proxy.learn();
}
}
运行结果:
处理前code...
演示静态代理
处理后code...
静态代理的优缺点:
1.因为代理对象需要与目标对象实现一样的接口 ,所以会造成多出很多代理类(可以用代理工厂改进)
2.一旦接口添加方法,代理对象和目标对象都要做出改变(违背了OCP原则)
posted on 2017-11-17 12:59 OrangeCsong 阅读(144) 评论(0) 编辑 收藏 举报