废话不多说:
什么是代理模式?代理在百度解释里面的意思:暂时代人担任 某单位的负责职务,因此显然意见,被代理者的功能代理者都需要拥有。同时使用者直接面对的是代理者而不是具体的被代理者。
依赖倒转原则:依赖接口编程!
对象抽象类:
interface Subject{
request();
}
被代理类:
interface ConcreteSubject implements Subject{
request(){
return "Hello World";
}
}
对象抽象类:
interface Proxy implements Subject{
request(){
return new ConcreteSubject().request();
}
}
使用者类:
Subject proxy = new Proxy();
proxy.request();
以上就是代理模式的简单代码了。
是不是觉得优点脱裤子放屁,多此一举?明明可以直接用实现类的,反而有包了一层,做调用!
其实不是啊!!!!
第一在代理模式里面,你向使用者暴露的是代理类而不是实现类,即使用者不知道有实现类的存在,它认为代理类就是实现类了。
第二在不改变实现类与使用者类的情况下,你只需要更改代理类,就可以实现包括额外逻辑处理,权限管理等等额外的业务功能。
第三代理类隐藏了细节,你无需知道里面是怎么执行的,就可以直接只用。
其实代理模式和中介者模式有相同地方。