美文网首页
设计模式之——静态代理

设计模式之——静态代理

作者: moutory | 来源:发表于2021-01-17 15:23 被阅读0次

前言

静态代理常和动态代理、装饰者模式一起提起,原因是静态代理和其余二者总有着较大的相似和关联,本篇文章将对静态代理的使用与特点进行讲解,希望能够为不清楚该设计模式的读者一个参考。

我们这里举一个和装饰者一样的案例,存在如下的接口和实现:

// 接口Animal
public interface Animal {
    void eat();
}
// 实现子类Dog
public class Dog implements Animal {

    @Override
    public void eat() {
        System.out.println("汪汪汪...");
    }
}

现在我们要实现Dog类进食前后的食物校验和进食完毕的反馈功能,用静态代理的实现方式如下:

public class ProxyDog implements Animal {

    private Animal animal;

    public ProxyDog(){
        this.animal = new Dog();
    }

    @Override
    public void eat() {
        System.out.println("检查食物是否满足...");
        animal.eat();
        System.out.println("已经吃完啦...");
    }
}

我们可以发现,静态代理的实现方式和装饰者模式十分的类似,都是实现了被代理对象(被装饰者)的接口。区别之处在于,静态代理在构造函数的时候就定义好了被代理的对象,而装饰者模式要增强的对象只有在传入的时候才能够明确。对于静态代理而言,调用者并不关心被代理的对象是谁,只在于代理对象是否能够实现对应的功能。

测试代码
测试结果
装饰器模式关注于在一个对象上动态地添加方法,而代理模式关注于控制对对象的访问。换句话说,用代理模式,代理类可以对它的客户隐藏一个对象的具体信息。因此当使用代理模式的时候,我们常常在一个代理类中创建一个对象的实例;当使用装饰器模式的时候,我们通常的做法是将原始对象作为一个参数传给装饰器的构造器。

小结

静态代理存在着以下特点:
1、代理对象在创建的过程中即定义好了被代理对象,而装饰者模式被增强的对象只有在调用的时候才确定。
2、静态代理侧重于对强调对对象的访问控制,屏蔽调用者对被代理对象的直接使用;装饰者模式则更加侧重对某个功能的增强。
3、静态代理由于被代理对象时已经确定好的,当需要代理的对象很多时,我们就不得不重复地写代码结构相似的代理类。(这也引出了动态代理)

相关文章

  • Java设计模式之代理模式

    Java设计模式之代理模式 代理模式 静态代理 动态代理 为什么需要代理 通过代理,我们能够不用知道委托人是谁,而...

  • 带你初识Java的代理模式

    Spring AOP是基于动态代理设计模式实现的,相对的就有静态代理 动态代理和静态代理 静态代理 对于静态代理,...

  • javaweb入门学习之代理模式(03)

    设计模式之代理模式 一. 概述 1.1 静态代理的实现 创建 接口类 IUserDao.java 目标对象类Use...

  • java设计模式之代理模式(静态代理)

      今天给大家分享的是java设计模式之代理模式中的静态代理模式,动态代理模式将在后面文章中给出。如有不足,敬请指...

  • 设计模式之代理

    设计模式之代理模式 一、定义 在Java中代理的实现一般分为三种:JDK静态代理、JDK动态代理以及CGLIB动态...

  • 说说Java代理模式

    在平时写代码时,经常会用到各种设计模式,其中一种就是代理模式,代理实现可以分为静态代理和动态代理。 静态代理 静态...

  • JDK和Cglib动态代理

    1.代理模式(静态代理) 代理模式是常用设计模式的一种,我们在软件设计时常用的代理一般是指静态代理,也就是在代码中...

  • 设计模式之-代理模式-静态代理

    1.介绍 1.1 定义 给目标对象提供一个代理对象,并由代理对象控制对目标对象的引用 代理对象:起到中介作用,连接...

  • 静态/动态代理模式

    代理, 顾名思义就是让别人替你完成或处理事情。 在Java设计模式中,代理模式又可分为静态代理和动态代理模式。静态...

  • 设计模式之静态代理模式

    静态代理模式定义 为其他对象对象提供一种代理以控制对这个对象的访问。 Subject:定义了RealSubject...

网友评论

      本文标题:设计模式之——静态代理

      本文链接:https://www.haomeiwen.com/subject/wxwaaktx.html