设计模式之代理模式之静态代理
首先,有个类
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就是这样的原理
}
设计模式之代理模式之静态代理相关推荐
- 23种设计模式7_代理模式之一静态代理
23种设计模式7_代理模式之一静态代理 1 基本介绍 代理模式:为其他对象提供一种代理以控制对这个对象的访问 代理模式也叫委托模式,它是一项基本设计技巧.许多其他的模式,如状态模式.策略模式.访问者模 ...
- 【Java】代理模式(静态代理动态代理)
CONTENT 代理模式 静态代理 动态代理 JDK 动态代理(基于接口) CGLIB 动态代理(基于类继承) JDK 动态代理 v.s. CGLIB 动态代理 JDK 动态代理为什么必须基于接口 R ...
- 代理模式之---静态代理
代理模式之-静态代理 代理模式:为一个对象提供一个替身,以控制对这个对象的访问.即通过代理对象访问目标对象,这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能. 被代 ...
- 【学习笔记】结合代码理解设计模式 —— 代理模式(静态代理、动态代理、延伸)
文章目录 什么是代理模式 一. 代理模式简介 二. 静态代理模式 三. 动态代理模式 万能模版 前言:笔记基于狂神设计模式视频.<大话设计模式>观后而写 (最近一直在更新之前的刷题博客,今 ...
- 设计模式之代理模式(静态代理、Java动态代理、Cglib动态代理)
代理模式的定义:由于某些原因需要给某对象提供一个代理以控制对该对象的访问.这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介. 提醒:动态代理中涉及到以前的一些知识 ...
- 设计模式之代理模式(静态代理动态代理)
目录 1.什么是代理模式 2.代理模式的结构 3.代理模式的实现 3.1 静态代理和动态代理概念 3.2 静态代理 3.3 动态搭理 3.3.1 代码实现 3.3.2 Proxy类讲解 4.动态代理V ...
- Java的代理模式之静态代理和动态代理
文章目录 静态代理 动态代理 jdk生成代理对象 cglib代理 代理模式简介: 代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目 ...
- java代理模式之静态代理
(一)静态代理 1.静态代码模式的介绍 静态代理在使用时,需要定义接口或者父类,被代理对象(即目标对象)与代理对象一起实现相同的接口或者是继承相同父类. 2.应用实例 具体要求: 1)定义一个接口:I ...
- 设计模式之代理模式(上) 静态代理与JDK动态代理
2019独角兽企业重金招聘Python工程师标准>>> 代理模式 给某一个对象提供一个代理,并由代理对象控制对原对象的引用. 静态代理 静态代理是由我们编写好的类,在程序运行之前就已 ...
- 研磨23种大话设计模式------动态代理模式 + 小结静态代理模式
大家好,我是一位在java学习圈中不愿意透露姓名并苟且偷生的小学员,如果文章有错误之处,还望海涵,欢迎多多指正 如果你从本文 get 到有用的干货知识,请帮忙点个赞呗,据说点赞的都拿到了offer 在 ...
最新文章
- 使用三层架构实现简单的MVC登陆操作!并实现基本的增删改查功能!!
- android 详细构建过程,Android构建模块详细步骤概述
- @Autowired
- what is your judgement basis?
- linux c语言 readline,Linux C代码实现读取配置文件示例
- 关于javascript遍历对象
- 关于C++中ios::sync_with_stdio(false)
- Atitit.dart语言的特性 编译时js语言大总结
- 用户登录模块——基于Django框架的天天生鲜电商网站项目系列博客(四)
- 华为交换机配置链路聚合实验——Eth Trunk
- 计算机开启宏功能吗,如何在excel2016正式版中启用/设置宏功能?
- Schematic export failed or was cancelled. Please consult the transcript in the source windo
- QT入门之布局 水平布局、垂直布局、表单布局、网格布局
- SAP UI5 应用开发教程之一百 - 如何修改 SAP UI5 框架的源代码实现,以及使用本地部署的 SAP UI5 SDK 试读版
- 《Ray Tracing in One Weekend》笔记 - 【Chapter 9】:Dielectrics
- 腾讯 2022 校招大厂薪资首发,白菜总包接近 40w!
- 区块链资产投资指南及技巧
- js判断手指上滑和下滑
- Ubuntu 22.04(LinuxMint 21)编译wine7.19安装最新微信3.7.6及QQ体会
- flink redis connector(支持flink sql)