实现简单静态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);
}
}
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);
}
}
相关文章推荐
- 代理模式之静态代理的简单实现---理解AOP(面向切面编程)的前奏---想要理解AOP,必须先理解一下
- 代理模式之静态代理的简单实现---理解AOP(面向切面编程)的前奏---想要理解AOP,必须先理解一下
- c#关于网页内容抓取,简单爬虫的实现。(包括动态,静态的)
- Matlab2010下使用FULLBNT工具箱实现简单的静态贝叶斯网络及推理
- AJAX调用接口实现静态页面局部动态化的简单例子
- python3 简单实现 web 静态服务器
- Spring Aop 实现一个简单的memcached小插件
- spring.net、castle windsor、unity实现aop、ioc的方式和简单区别
- Spring_AOP_Proxy AOP静态代理的实现
- AOP从静态代理到动态代理 Emit实现
- 用代理技术实现简单的AOP框架
- Asm实现静态AOP的两种方式-生成java-proxy类
- 代理模式之静态代理的稍微复杂实现---理解AOP(面向切面编程)---以具体实例来理解AOP概念
- 自己实现简单的AOP(五)使Demo适应webApi、亦可完成属性自动注入
- Castle AOP 系列(三):实现一个简单的调用指令路由
- SpringAOP过滤目标方法的简单实现
- spring AOP实现(Annotation方式/静态文件配置方式)
- java+spring简单实现AOP
- aop简单注解实现例程
- Emit学习-实战篇-实现一个简单的AOP框架(三)