您的位置:首页 > 运维架构

实现简单静态AOP

2017-07-23 14:03 246 查看
接口:

package cn.tedu.jingtai.proxy;

public interface ProjectService {

void saveObject(Object obj);
void updateObject(Object obj);
}


实现类:
package cn.tedu.jingtai.proxy;

public class ProjectServiceImpl implements ProjectService {

public void saveObject(Object obj) {
//long t1=System.currentTimeMillis();
System.out.println("saveObject");
//模拟方法正在执行(dao.insertObject)
try{Thread.sleep(1000);}catch(Exception e){}
//long t2=System.currentTimeMillis();
//long t=t2-t1;
//System.out.println(t);
}
public void updateObject(Object obj) {
System.out.println("updateObject");
//模拟方法正在执行(dao.updateObject)
try{Thread.sleep(1000);}catch(Exception e){}
}

}


代理类:

package cn.tedu.jingtai.proxy;
//扩展类(可以为实现了ProjectService接口的所有类添加扩展功能)
//此类通常称之为代理类,这个代理类的特点
//1)与被代理类实现相同的接口
//2)代理被代理对象实现功能的扩展.
//静态代理:(自己写的类,它与被代理对象实现了共同接口)
//1)优势:可以很方便的为被代理对象实现功能扩展
//2)劣势:假如有很多接口的实现类都需要这样的功能扩展,
//那就需要创建很多个这样的代理类,此时就会比较麻烦.
public class ProjectServiceStaticProxy implements ProjectService {

private ProjectService projectService;
public ProjectServiceStaticProxy(ProjectService projectService) {
this.projectService=projectService;
}
public void saveObject(Object obj) {
long t1=System.currentTimeMillis();
projectService.saveObject(obj);
long t2=System.currentTimeMillis();
long t=t2-t1;
System.out.println("saveObject方法执行时间为:"+t);
}
public void updateObject(Object obj) {
long t1=System.currentTimeMillis();
projectService.updateObject(obj);
long t2=System.currentTimeMillis();
long t=t2-t1;
System.out.println("updateObject方法执行时间:"+t);
}

}

测试:

package cn.tedu.jingtai.proxy;

public class ProjectServiceTest {

public static void main(String[] args) {
ProjectService projectService;

ProjectServiceImpl projectServiceImpl
=new ProjectServiceImpl();

Object obj=new Object();
//projectServiceImpl.saveObject(obj);
//projectServiceImpl.updateObject(obj);

projectService=
new ProjectServiceStaticProxy(//代理类
projectServiceImpl);//被代理类

projectService.saveObject(obj);
projectService.updateObject(obj);

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: