动态代理与AOP面向切面编程
*至于什么是面向切面编程自己百度这里要表达的意思就是
我个人认为 aop就是一个编程方式,不存在切面编程取代面向对象编程的事情,我原来听到有人说将来面向切面编程会取代面向对象编程. 我们拭目以待吧...世间一切都不好说呵呵呵
*至于什么是面向切面编程自己百度这里要表达的意思就是
*再调用固定的方法中间有些固定的方法调用的实现
/**
* 动态代理与AOP面向切面编程
*至于什么是面向切面编程自己百度这里要表达的意思就是
*再调用固定的方法中间有些固定的方法调用的实现
*/
interface Jisuan{
public int jisuan(int a, int b);
}
class Add implements Jisuan{
@Override
public int jisuan(int a, int b) {
return a+b;
}
}
class Sub implements Jisuan{
@Override
public int jisuan(int a, int b) {
return a-b;
}
}
class MyInvocationHandler1 implements InvocationHandler{
Object obj; //声明被代理类
public void setObject(Object obj){
this.obj=obj;
}
@Override
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
System.out.println(method.getName());
System.out.println(args);
//这里可以写固定的方法调用
Util.aa();
Object returnobj = method.invoke(obj, args);
System.out.println(returnobj);
Util.bb();
return returnobj;
}
}
class Util{
public static void aa(){
System.out.println("========aa======");
}
public static void bb(){
System.out.println("========bb======");
}
}
class MyProxy {
public static Object newInstances(Object obj){
MyInvocationHandler1 MyInvocationHandler1 = new MyInvocationHandler1();
MyInvocationHandler1.setObject(obj);
return Proxy.newProxyInstance(obj.getClass().getClassLoader(),
obj.getClass().getInterfaces(), MyInvocationHandler1);
}
}
public class Test3 {
public static void main(String[] args) {
Jisuan add = new Add();
Jisuan myProxy = null;
myProxy= (Jisuan) MyProxy.newInstances(add);
myProxy.jisuan(11, 23);
Jisuan sub = new Sub();
myProxy = (Jisuan) MyProxy.newInstances(sub);
myProxy.jisuan(11, 23);
}
}
我个人认为 aop就是一个编程方式,不存在切面编程取代面向对象编程的事情,我原来听到有人说将来面向切面编程会取代面向对象编程. 我们拭目以待吧...世间一切都不好说呵呵呵