zoukankan      html  css  js  c++  java
  • 大话设计模式之代理模式读后感

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

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

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

  • 相关阅读:
    线性同余方程模板( A+C*x=B(mod D) )
    线性同余方程组模板( x=r0(mod m0) )
    poj2891(线性同余方程组)
    BestCoder Round #63 (div.2)
    16.实现多个具有相同方法的接口和父类与实现接口有相同方法
    14.Java中的StringTokenizer类的使用方法
    13.Java为什么不支持多继承
    bootstrap使用基础
    Js 百分比进度条
    Js更改样式导致hover效果消失
  • 原文地址:https://www.cnblogs.com/zfding/p/8687643.html
Copyright © 2011-2022 走看看