静态代理动态代理以及aop
2017-02-07 23:15
399 查看
静态代理和动态代理
//静态代理
interface SubClass{
void action();
}
class SubClasss implements SubClass{
public void action(){
System.out.println("执行action");
}
}
class Proxy1 implements SubClass{
SubClasss s;
public Proxy1(SubClasss s){
this.s=s;
}
@Override
public void action() {
System.out.println("代理类执行");
s.action();
}
}
public class ProxyTest {
public static void main(String[] args) {
SubClass s = new Proxy1(new SubClasss());
s.action();
//动态代理
Protest p = new Protest();
Object o =p.blind(s);
SubClass ss = (SubClass) o;
ss.action();
Childclass c = new Childclass();
ParentClass pa =(ParentClass) p.blind(c);
pa.action();
}
}
//动态代理
interface ParentClass{
void action();
}
class Childclass implements ParentClass{
@Override
public void action() {
System.out.println("执行childclass的action方法");
}
}
class Protest implements InvocationHandler{
Object obj;
public Object blind(Object obj){
this.obj=obj;
return Proxy.newProxyInstance(obj.getClass().getClassLoader(),
obj.getClass().getInterfaces(), this);
}
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
System.out.println("invoke方法");
Object returnVal = method.invoke(obj, args);
return returnVal;
}
}aop
interface Parent{
void fly();
void action();
}
class Child implements Parent{
@Override
public void fly() {
System.out.println("i believe i can fly");
}
@Override
public void action() {
System.out.println("执行action");
}
}
class ChildUtil{
void method1(){
System.out.println("=======方法一=======");
}
void method2(){
System.out.println("=======方法二=======");
}
}
class MyInvocation implements InvocationHandler{
Object obj;
void setObj(Object obj){
this.obj=obj;
}
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
ChildUtil child = new ChildUtil();
child.method1();
Object o = method.invoke(obj, args);
child.method2();
return o;
}
}
class Protest2{
public static Object getProxyInstance(Object obj){
MyInvocation m = new MyInvocation();
m.setObj(obj);
return Proxy.newProxyInstance(obj.getClass().getClassLoader(),
obj.getClass().getInterfaces(), m);
}
}
public class AopTest {
public static void main(String[] args) {
Child c = new Child();
Object obj = Protest2.getProxyInstance(c);
Parent p = (Parent) obj;
p.fly();
p.action();
}
}
//静态代理
interface SubClass{
void action();
}
class SubClasss implements SubClass{
public void action(){
System.out.println("执行action");
}
}
class Proxy1 implements SubClass{
SubClasss s;
public Proxy1(SubClasss s){
this.s=s;
}
@Override
public void action() {
System.out.println("代理类执行");
s.action();
}
}
public class ProxyTest {
public static void main(String[] args) {
SubClass s = new Proxy1(new SubClasss());
s.action();
//动态代理
Protest p = new Protest();
Object o =p.blind(s);
SubClass ss = (SubClass) o;
ss.action();
Childclass c = new Childclass();
ParentClass pa =(ParentClass) p.blind(c);
pa.action();
}
}
//动态代理
interface ParentClass{
void action();
}
class Childclass implements ParentClass{
@Override
public void action() {
System.out.println("执行childclass的action方法");
}
}
class Protest implements InvocationHandler{
Object obj;
public Object blind(Object obj){
this.obj=obj;
return Proxy.newProxyInstance(obj.getClass().getClassLoader(),
obj.getClass().getInterfaces(), this);
}
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
System.out.println("invoke方法");
Object returnVal = method.invoke(obj, args);
return returnVal;
}
}aop
interface Parent{
void fly();
void action();
}
class Child implements Parent{
@Override
public void fly() {
System.out.println("i believe i can fly");
}
@Override
public void action() {
System.out.println("执行action");
}
}
class ChildUtil{
void method1(){
System.out.println("=======方法一=======");
}
void method2(){
System.out.println("=======方法二=======");
}
}
class MyInvocation implements InvocationHandler{
Object obj;
void setObj(Object obj){
this.obj=obj;
}
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
ChildUtil child = new ChildUtil();
child.method1();
Object o = method.invoke(obj, args);
child.method2();
return o;
}
}
class Protest2{
public static Object getProxyInstance(Object obj){
MyInvocation m = new MyInvocation();
m.setObj(obj);
return Proxy.newProxyInstance(obj.getClass().getClassLoader(),
obj.getClass().getInterfaces(), m);
}
}
public class AopTest {
public static void main(String[] args) {
Child c = new Child();
Object obj = Protest2.getProxyInstance(c);
Parent p = (Parent) obj;
p.fly();
p.action();
}
}
相关文章推荐
- 动态代理和静态代理以及spring的aop
- AOP思想个人理解以及实战静态代理、JDK动态代理、CGlib动态代理
- 动态代理和静态代理以及spring的aop
- Java静态代理、动态代理以及AOP
- java代理(静态代理和jdk动态代理以及cglib代理)
- spring实现AOP的两种方式以及实现动态代理方式
- spring实现AOP的两种方式以及实现动态代理方式
- Java之代理(jdk静态代理,jdk动态代理,cglib动态代理,aop,aspectj)
- Java之代理(jdk静态代理,jdk动态代理,cglib动态代理,aop,aspectj)
- Java之代理(jdk静态代理,jdk动态代理,cglib动态代理,aop,aspectj)
- java学习之路----静态代理---动态代理-----AOP的前奏(AOP也是动态代理)
- AOP之静态代理VS动态代理
- 代理模式、静态代理、动态代理、aop
- aop的概念以及 cglib-nodep-2.1_3.jar第三方jia包动态代理使用
- 从静态代理到动态代理理解AOP
- Spring AOP 静态代理与动态代理
- aop的概念以及 cglib-nodep-2.1_3.jar第三方jia包动态代理使用
- [Spring学习笔记 4 ] AOP 概念原理以及java动态代理
- Java静态代理以及动态代理使用详解
- spring(AOP)静态代理、JDK动态代理、cglib实现代理