首先,有个类

public class A  {
    public int add(int p) {
        return 100 + p;
    }
    public int sub(int p) {
        return 100 - p;
    }
}

给类A写一个代理类

public class B extends A  {
   private A a;

public B(A a){

this.a=a;

}

public int add(int p) {

return a.add(p);//这就实现了对a的代理,也可以添加其他逻辑
    }
    public int sub(int p) {
        return a.sub(p);//这就实现了对a的代理,也可以添加其他逻辑
    }
}

上面的代理类写完后。。客户只要把目标对象给代理类,然后对该目标对象创建一个代理对象。

客户操作代理对象,然后代理对象再操作目标对象。

具体代码

public void test(){

A a=new A(); //首先创建目标对象

B b=new B(a);//创建代理对象

//调用代理对象方法

b.add(10); //间接调用a的add,并且在调用a的add方法前后还添加了一些代码处理逻辑

b.sub(20); //间接调用b的sub,并且在调用a的sub方法前后还添加了一些代码处理逻辑

//代理模式的用处就是在不更改原来的类的同事增加一些处理逻辑。。spring aop就是这样的原理

}

设计模式之代理模式之静态代理相关推荐

  1. 23种设计模式7_代理模式之一静态代理

    23种设计模式7_代理模式之一静态代理 1 基本介绍 代理模式:为其他对象提供一种代理以控制对这个对象的访问 代理模式也叫委托模式,它是一项基本设计技巧.许多其他的模式,如状态模式.策略模式.访问者模 ...

  2. 【Java】代理模式(静态代理动态代理)

    CONTENT 代理模式 静态代理 动态代理 JDK 动态代理(基于接口) CGLIB 动态代理(基于类继承) JDK 动态代理 v.s. CGLIB 动态代理 JDK 动态代理为什么必须基于接口 R ...

  3. 代理模式之---静态代理

    代理模式之-静态代理 代理模式:为一个对象提供一个替身,以控制对这个对象的访问.即通过代理对象访问目标对象,这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能. 被代 ...

  4. 【学习笔记】结合代码理解设计模式 —— 代理模式(静态代理、动态代理、延伸)

    文章目录 什么是代理模式 一. 代理模式简介 二. 静态代理模式 三. 动态代理模式 万能模版 前言:笔记基于狂神设计模式视频.<大话设计模式>观后而写 (最近一直在更新之前的刷题博客,今 ...

  5. 设计模式之代理模式(静态代理、Java动态代理、Cglib动态代理)

    代理模式的定义:由于某些原因需要给某对象提供一个代理以控制对该对象的访问.这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介. 提醒:动态代理中涉及到以前的一些知识 ...

  6. 设计模式之代理模式(静态代理动态代理)

    目录 1.什么是代理模式 2.代理模式的结构 3.代理模式的实现 3.1 静态代理和动态代理概念 3.2 静态代理 3.3 动态搭理 3.3.1 代码实现 3.3.2 Proxy类讲解 4.动态代理V ...

  7. Java的代理模式之静态代理和动态代理

    文章目录 静态代理 动态代理 jdk生成代理对象 cglib代理 代理模式简介: 代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目 ...

  8. java代理模式之静态代理

    (一)静态代理 1.静态代码模式的介绍 静态代理在使用时,需要定义接口或者父类,被代理对象(即目标对象)与代理对象一起实现相同的接口或者是继承相同父类. 2.应用实例 具体要求: 1)定义一个接口:I ...

  9. 设计模式之代理模式(上) 静态代理与JDK动态代理

    2019独角兽企业重金招聘Python工程师标准>>> 代理模式 给某一个对象提供一个代理,并由代理对象控制对原对象的引用. 静态代理 静态代理是由我们编写好的类,在程序运行之前就已 ...

  10. 研磨23种大话设计模式------动态代理模式 + 小结静态代理模式

    大家好,我是一位在java学习圈中不愿意透露姓名并苟且偷生的小学员,如果文章有错误之处,还望海涵,欢迎多多指正 如果你从本文 get 到有用的干货知识,请帮忙点个赞呗,据说点赞的都拿到了offer 在 ...

最新文章

  1. 使用三层架构实现简单的MVC登陆操作!并实现基本的增删改查功能!!
  2. android 详细构建过程,Android构建模块详细步骤概述
  3. @Autowired
  4. what is your judgement basis?
  5. linux c语言 readline,Linux C代码实现读取配置文件示例
  6. 关于javascript遍历对象
  7. 关于C++中ios::sync_with_stdio(false)
  8. Atitit.dart语言的特性  编译时js语言大总结
  9. 用户登录模块——基于Django框架的天天生鲜电商网站项目系列博客(四)
  10. 华为交换机配置链路聚合实验——Eth Trunk
  11. 计算机开启宏功能吗,如何在excel2016正式版中启用/设置宏功能?
  12. Schematic export failed or was cancelled. Please consult the transcript in the source windo
  13. QT入门之布局 水平布局、垂直布局、表单布局、网格布局
  14. SAP UI5 应用开发教程之一百 - 如何修改 SAP UI5 框架的源代码实现,以及使用本地部署的 SAP UI5 SDK 试读版
  15. 《Ray Tracing in One Weekend》笔记 - 【Chapter 9】:Dielectrics
  16. 腾讯 2022 校招大厂薪资首发,白菜总包接近 40w!
  17. 区块链资产投资指南及技巧
  18. js判断手指上滑和下滑
  19. Ubuntu 22.04(LinuxMint 21)编译wine7.19安装最新微信3.7.6及QQ体会
  20. flink redis connector(支持flink sql)

热门文章

  1. MySQL高级--2--黑马
  2. iOS开发——cache自动清理方案探索
  3. MATLAB绘制三维曲面图和等高线 绘图(2)
  4. Scratch-(五)满天星-画笔绘制五角星
  5. 计算机网络基础以及进程查看管理
  6. Unity UGUI 代码改变遮挡层级
  7. 中期国际量化:安卓手机如何下载mt4及MT4一些功能介绍
  8. 微信小程序页面跳转失效原因
  9. python批量删除文件名中的下划线-代码详解
  10. ACM2021辽宁省赛:CDEFGILM