Java动态代理学习笔记

故事开始~~~

有一天张三想买一部IPhoneX手机但是由于价格太贵一直舍不得买,反复去苹果商店去看手机价格超出预算失望而归,就在此时出现一位神秘人物(代理者)告诉张三我可以低价买到你想要的手机.这个时候张三就跟神秘人物(代理者)进行沟通让神秘人物(代理者)帮他购买一部手机。故事结尾张三成功买到IPhoneX。故事结束 

接下来直接上代码

根据上述需求,总结出3点:张三、神秘人物、苹果商店;请看如下代码

//定义张三

public class Person  implements PhoneFactory   {

        public void buyIPhoneX(double money){

                System.out.println("我需要一部IPhoneX手机,价格为:"+money)

        }

}

//苹果商店定义接口    

public interface PhoneFactory  {

    void buyIPhoneX(double money);

}

//定义神秘人物

public class Company  implements InvocationHandler{

        private Object factory;  

        public void setFactory(Object factory) { 

                this.factory = factory;

        }   

      //创建代理对象 

       public Object getProxyInstance(){

               return Proxy.newProxyInstance(factory.getClass().getClassLoader(), factory.getClass().getInterfaces(), this);

        }

        //通过动态代理对象方法进行操作

        @Override

         public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { 

                //factory :张三   args:参数   100.0

                  return method.invoke(factory, args); 

            } 

}

public class Client{

        //创建张三

        PhoneFactory  phoneFactory = new Person();

        //创建代理者

        Company company = new Company();

        company.setFactory(phoneFactory )

        Phone phoneProxy = company.getProxyInstance();

        //张三出100拿到手机

        phoneProxy.IPhoneX(100.0)

}

最后输出:我需要一部IPhoneX手机,价格为:100.0

以上代码手写的,如果有错误万分感谢大佬点评

你可能感兴趣的:(Java动态代理学习笔记)