• 大话设计模式之代理模式读后感


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

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

    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动态代理,有兴趣的可以自己去找找相关的资料了解了解。这里就不再说这个,毕竟不是我们的重点。

  • 相关阅读:
    VUE组件——FlameGraph火焰图
    Linux操作之——配置samba
    Javascript基础——图片预加载
    Javascript基础——浮点数操作
    js页面实时显示时间
    基于Struts2+Hibernate的朋友圈留言网站开发的质量属性
    框架选择
    软件体系架构
    《需求分析与系统设计》第三篇
    《需求分析与系统设计》阅读笔记第二篇
  • 原文地址:https://www.cnblogs.com/zfding/p/8687643.html
Copyright © 2020-2023  润新知