静态代理

       代理是一种设计模式,提供了对目标对象另一种访问方式。。。可以对其功能进行扩展(符合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原则)

原文地址:https://www.cnblogs.com/csong7876/p/7851036.html