JAVA#AOP动态代理 札记

 public static void main(String[] args) {
        Batman batman=new Batman();//创建一个代理类的对象
        Object object=MyProxy.getProxyInstance(batman);//返回一个代理类的对象
        Human human=(Human)object;
        human.info();//通过代理类的对象调用重写抽象方法
        human.fly();
        //////////////////////////////////////
        System.out.println("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$");
        NikeClothFactory ncf=new NikeClothFactory();
        Object oo=MyProxy.getProxyInstance(ncf);
        Clothproduct cp=(Clothproduct)oo;
        cp.productCloth();

    }
}
interface Human{//人类接口
    void fly();//两抽象方法
    void info();
}
class Batman implements Human{//蝙蝠侠继承人类
    @Override
    public void info() {
        System.out.println("请叫我蝙蝠侠");
    }

    @Override
    public void fly() {
        System.out.println("飞天小蝙蝠");
    }
}
class MyInvocationhandler implements InvocationHandler {
    Object object;//声明被代理类
    public void setObject(Object o){//实例化被代理类,返回一个代理类的对象
        this.object=o;
    }
    @Override//当通过代理类的对象发起对被重写方法的调用时,都会转成对如下invoke的调用
    public Object invoke(Object proxy, Method method, Object[] args) throws Exception{
        HumanUtil humanUtil=new HumanUtil();
        humanUtil.method1();
        Object returnVal=method.invoke(object,args);
        humanUtil.method2();
        return returnVal;
    }
}
class HumanUtil{
    public void method1(){
        System.out.println("$$$$$$$$$$$$$$$$4Method___1$$$$$$$$$$$$$$$$");
    }
    public void method2(){
        System.out.println("$$$$$$$$$$$$$$$$Method___2$$$$$$$$$$$$$$$$");
    }
}
class MyProxy{
    public static Object getProxyInstance(Object object){//方法——动态创建代理类的对象
        MyInvocationhandler myInvocationhandler=new MyInvocationhandler();
        myInvocationhandler.setObject(object);
        return Proxy.newProxyInstance(object.getClass().getClassLoader(),object.getClass().getInterfaces(),myInvocationhandler);
    }
}
$$$$$$$$$$$$$$$$4Method___1$$$$$$$$$$$$$$$$
请叫我蝙蝠侠
$$$$$$$$$$$$$$$$Method___2$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$4Method___1$$$$$$$$$$$$$$$$
飞天小蝙蝠
$$$$$$$$$$$$$$$$Method___2$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$4Method___1$$$$$$$$$$$$$$$$
nike make cloth
$$$$$$$$$$$$$$$$Method___2$$$$$$$$$$$$$$$$

猜你喜欢

转载自blog.csdn.net/Iverson941112/article/details/86427724
今日推荐