java中设计模式之代理模式
程序员文章站
2022-07-12 23:37:42
...
代理模式是设计模式中比较简单的一种模式;
代理模式就是委托对象将部分的功能委托给代理对象来使用,代理对象就拥有委托对象的部分功能,代理对象通过调用自己的方法间接调用委托对象的方法;
比如代理律师之类的,委托人将自己的部分权限委托给代理律师使用,代理律师就拥有了委托人的一部分权限,并且可以被代理人名义上来行使权限,当然代理人不能超出这个权限;而在此这个权限的传递是通过合理的合同;
因此在编写一个代理模式是需要有公共的接口类(合同);委托对象实现公共接口(签署合同);代理对象现公共接口(签署合同);权限的信息在公共接口中定义(合同内容)
公共接口:
package com.proxy.face; public interface Love { public void speak(); }
委托对象:
package com.proxy.me; import com.proxy.face.Love; public class MeInfo implements Love { private String name; private String name2; public MeInfo(String name,String name2) { super(); this.name = name; this.name2 = name2; } @Override public void speak() { // TODO Auto-generated method stub System.out.println(name+" love "+name2); } }
代理对象:
package com.proxy.She; import com.proxy.face.Love; import com.proxy.me.MeInfo; public class She implements Love { private MeInfo info; private String name; private String name2; public She(String name,String name2) { this.name = name; this.name2=name2; } public void speak(){ if(info==null){ info=new MeInfo(name,name2); } info.speak(); } }
代理对象行使权限:
package com.proxy.test; import com.proxy.She.She; import com.proxy.face.Love; public class Test { public static void main(String[] args) { Love she=new She("I","you"); she.speak(); } }
代理对象反馈结果:
I love you
代理模式的使用场景:
1.在对外隐藏某个类时,我们可以为该类提供代理类来访问
2.当一个类需要对不同的调用者提供不同的调用权限时,可以使用代理类来实现
3.当我们要扩展某个类的某个功能时,可以使用代理模式,在代理类中进行简单扩展
上一篇: 单例模式详解