大话设计模式之代理模式

Posted 恋在那时

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大话设计模式之代理模式相关的知识,希望对你有一定的参考价值。

引言:让我们重温经典,致敬经典

代理模式:为其他对象提供一种代理以控制对这个对象的访问

UML:

 

解读:代理模式要求代理者和被代理者实现同一个接口或者继承自同一个父类。并且代理者要持有真实对象的引用。

所以代理者和被代理者之间的关系应该是关联关系。

代码:

 1 package com.dzf.designtest;
 2 
 3 /**
 4  * <desc>
 5  *     代理模式:为其他对象提供一种代理以控制对这个对象的访问
 6  *
 7  * </desc>
 8  * @author dingzf
 9  * @date 2018/4/1
10  * @time 17:56
11  */
12 public class ProxyDemo {
13     //客户端调用
14     public static void main(String[] args) {
15         Proxy proxy = new Proxy();
16         proxy.print();
17     }
18 }
19 abstract class Subject{
20     public abstract void print();
21 }
22 class RealSubject extends Subject{
23     @Override
24     public void print() {
25         System.out.println("我是真实的对象1");
26     }
27 }
28 class Proxy extends Subject{
29     private Subject subject;
30 
31     @Override
32     public void print() {
33         if(subject == null){
34             subject = new RealSubject();
35         }
36         subject.print();//执行真实对象的方法或者行为
37     }
38 }

对于客户端来说,无需知道真实对象(RealSubject),只需要知道代理者即可。

要点:代理者和被代理者实现同一个接口,或者继承自同一个父类,代理者持有被代理者的引用。

体现:jdk的动态代理

我们知道jdk的动态代理只能代理接口不能代理类。代理类的要使用cglib动态代理,有兴趣的可以自己去找找相关的资料了解了解。这里就不再说这个,毕竟不是我们的重点。

以上是关于大话设计模式之代理模式的主要内容,如果未能解决你的问题,请参考以下文章

java 之 代理模式(大话设计模式)

&lt;四&gt;读&lt;&lt;大话设计模式&gt;&gt;之代理模式

《大话设计模式》——读后感 老板回来了,我不知道?——观察者模式之事件委托

《大话设计模式》——读后感 为别人做嫁衣?——静态代理模式

大话设计模式-代理模式

大话设计-代理模式