故事开始~~~
有一天张三想买一部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
以上代码手写的,如果有错误万分感谢大佬点评