美文网首页
Java学习笔记(8)-23种设计模式之代理模式

Java学习笔记(8)-23种设计模式之代理模式

作者: 非典型程序猿 | 来源:发表于2020-02-24 15:23 被阅读0次

在总结完5种创建型模式之后,接下来开始总结结构型模式,而这篇文章就是总结第一种结构型模式,代理模式

定义

当我们在日常的开发过程中,由于某些原因需要给一个目标访问类提供一个中间类,来作为访问控制,作为访问目标类的媒介,这样的中间类称之为代理,代理可以对目标类起到一定的访问控制作用和保护作用,我们常见的代理模式框架就有Retrofit,其本质就是okhttp的代理类。

结构

  • 抽象主题:也就是真正需要执行的业务逻辑代码
  • 真实的主题类:我们所真正访问的目标类中的业务逻辑方法
  • 代理类:实现控制访问和更多的业务逻辑控制

示例

public class MyTest{
    public static void main(String[] args) throws CloneNotSupportedException {
        Proxy proxy = new Proxy();
        proxy.method();
    }
    /**
     * 定义所需要访问的主题接口
     */
    interface Subject{
        void method();
    }
    /**
     * 定义真实的目标类
     */
    static class RealClass implements Subject{
        //真实目标类的访问方法
        @Override
        public void method() {
            System.out.println("访问到了真实的目标类的目标方法...");
        }
    }
    /**
     * 定义代理类
     */
    static class Proxy implements Subject{
        private RealClass realClass ;
        //开始执行代理类的方法
        @Override
        public void method() {
            System.out.println("开始访问代理类的方法...");
            if (realClass == null){
                realClass = new RealClass();
            }
            preMethod();
            realClass.method();
            postMethod();

        }
    }
    private static void preMethod(){
        System.out.println("访问真实类之前执行的操作...");
    }
    private static void postMethod(){
        System.out.println("访问真实类完成之后的操作...");
    }
}

其执行结果为

开始访问代理类的方法...
访问真实类之前执行的操作...
访问到了真实的目标类的目标方法...
访问真实类完成之后的操作...

我们可以看出我们在使用真正的目标类RealClass时,并没有直接访问其method()方法,而是通过一个代理类Proxy来实现的,并且实现了在访问目标之前和之后去执行相应的操作,我们可以通过这种方式来对访问真实目标类加以控制,以实现更多的需求。
优缺点

  • 优点 :可以对真实的访问类起到保护作用
  • 缺点 :当我们需要新增加一个访问主题时,真实类和代理类都需要做对应的代码添加,比较麻烦。其次是代理模式所实现的方法,它必须要在真实目标类里存在,即代理类对真实类的依赖度过高,不易单独更改实现新的代理功能。
    今天的代理模式就给大家总结到这里啦,觉得有帮助记得点个赞~

相关文章

  • Java代理模式之JDK动态代理

    了解什么是动态代理模式,可参考Java设计模式之代理模式 简介 JDK动态代理是java.lang.reflect...

  • java/android 设计模式学习笔记(8)---桥接模式

    java/android 设计模式学习笔记(8)---桥接模式 【备注】只用于个人收藏

  • Proxy代理者模式(一)

    摘要 本篇笔记针对Java设计模式中最难理解的代理者模式进行讲解,从静态代理、动态代理,及Java相关代理类的应用...

  • java之代理技术

    java之代理模式 直接聊技术! 描述 代理模式是常用的java设计模式,代理类主要负责为委托类预处理消息、过滤消...

  • Java设计模式之代理模式

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

  • java动态代理(JDK和cglib)(转载自http://ww

    java动态代理(JDK和cglib) JAVA的动态代理 代理模式 代理模式是常用的java设计模式,他的特征是...

  • Proxy 代理模式

    设计原则学习笔记 设计模式学习笔记 作用 为对象提供增强作用 类图 图为静态代理。另有动态代理模式,由于类图不具...

  • 设计模式之代理模式

    title: 设计模式之代理模式date: 2018-08-15 20:25:42tags: 设计模式 笔记 Ja...

  • Spring AOP源码解析

    欲了解AOP,需先了解Java动态代理;欲了解Java动态代理,先熟悉设计模式之代理模式。入门有道,先从简学。 1...

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

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

网友评论

      本文标题:Java学习笔记(8)-23种设计模式之代理模式

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