java代理学习(Proxy)之静态代理
一、静态代理
总结:
代理模式可以在不修改被代理对象的基础上,通过扩展代理类,进行一些功能的附加与增强。值得注意的是,代理类和被代理类应该共同实现一个接口,或者是共同继承某个类
不足:静态代理实现了目标对象的所有方法,一旦目标接口增加方法,代理对象和目标对象都要进行相应的修改,增加维护成本。代理对象只服务于一种类型的对象。
定义接口类:
public interface AdminService {void update();Object find();
}
定义接口实现类:
public class AdminServiceImpl implements AdminService{@Overridepublic void update() {System.out.println("修改管理系统数据");}@Overridepublic Object find() {System.out.println("查看管理系统数据");return new Object();}
}
代理类:
public class AdminServiceProxy implements AdminService {private AdminService adminService;public AdminServiceProxy(AdminService adminService) {this.adminService = adminService;}@Overridepublic void update() {System.out.println("判断用户是否有权限进行update操作");adminService.update();System.out.println("记录用户执行update操作的用户信息、更改内容和时间等");}@Overridepublic Object find() {System.out.println("判断用户是否有权限进行find操作");System.out.println("记录用户执行find操作的用户信息、查看内容和时间等");return adminService.find();}
}
测试类:
public class StaticProxyTest {public static void main(String[] args) {AdminService adminService = new AdminServiceImpl();AdminServiceProxy proxy = new AdminServiceProxy(adminService);adminService.update();System.out.println("=============================");adminService.find();System.out.println("¥¥¥¥¥¥¥¥¥¥¥¥¥");proxy.update();System.out.println("=============================");proxy.find();}
}
打印结果:
修改管理系统数据
=============================
查看管理系统数据
¥¥¥¥¥¥¥¥¥¥¥¥¥
判断用户是否有权限进行update操作
修改管理系统数据
记录用户执行update操作的用户信息、更改内容和时间等
=============================
判断用户是否有权限进行find操作
记录用户执行find操作的用户信息、查看内容和时间等
查看管理系统数据
通过观看代码以及实际debug验证,实际上就是代理类实现了与被代理共同的接口或者继承了共同的类,代理类中再通过构造方法传入目标对象,这个目标对象就是被代理对象,然后在代理类中重写接口方法,既能自定义新增方法,也能实现目标对象类方法的调用。
java代理学习(Proxy)之静态代理相关推荐
- 浅谈Java和SAP ABAP的静态代理和动态代理,以及ABAP面向切面编程的尝试
文章目录 Java的静态代理 静态代理的优缺点 ABAP的静态代理 Spring AOP的动态代理 JDK动态代理的优缺点 CGLIB动态代理的优缺点 ABAP CGLIB的模拟实现 ABAP Pre ...
- Java设计模式:(一)动态代理分析 (含静态代理)
代理模式:为其他对象提供一种代理以控制某个对象的访问.用在:在某些情况下,一个客户不想或者不能直接访问另一个对象,而代理对象可以在客户端和目标对象之前起到中介的作用,代理对象还可以完成它附加的操作. ...
- Java 结合实例学会使用 静态代理、JDK动态代理、CGLIB动态代理
前言 代理 代理 代理 代理 代理 代理 代理 代理 代理 代理 代理 代理 代理 代理 代理 代理 代理 代理 代理 代理 很多人至今都是看到 代理就懵, 静态代理.动态代理.JDK动态代理.CGL ...
- 代理模式详解(静态代理和动态代理的区别以及联系)
原文链接:https://www.cnblogs.com/takumicx/p/9285230.html 1. 前言 代理模式可以说是生活中处处可见.比如说在携程上定火车票,携程在这里就起到了一个代理 ...
- Spring学习8之静态代理
一.静态代理是什么? 代理模式是常用的Java设计模式,它的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息.过滤消息.把消息转发给委托类,以及事后处理消息等.代理类与委托类之间通常 ...
- Jerry文章《浅谈Java和SAP ABAP的静态代理和动态代理,以及ABAP面向切面编程的尝试一文的源代码》
原文链接 导航目录 工具类ZCL_ABAP_DYNAMIC_PROXY_FACTORY 工具类zcl_abap_cglib_tool Jerry Wang的ABAP专题文章 工具类ZCL_ABAP_D ...
- 代理模式(Proxy)--静态代理
1,代理模式的概念 代理模式:为其他对象提供一种代理,以控制对这个对象的访问(代理对对象起到中介的作用,可去掉功能服务或者添加额外的服务) 2,代理模式的分类 (1)远程代理:类似于客户机服务器模式 ...
- java设计模式--工厂模式、静态代理模式、动态代理模式
工厂模式 代码实现: 步骤一:创建一个接口 Car.java package FactoryMode;public interface Car {public void run(); } 步骤二:创建 ...
- Spring学习9之静态代理再理解
一.代理是什么? 代理的概念: 生活中的代理是很常见的,比如代购.律师.中介等,他们都有一个共性就是帮助被代理人处理一些前前后后的事情.而被代理人只需要专注做自己要做的那部分事情就可以了. Java中 ...
- java反射学习(2):反射与代理模式
一 基本代理设计模式 代理模式核心思路,一个接口有两个子类,一个子类完成业务需求,另一个完成辅助功能 假设实现一个功能,张三吃饭 代码如下: 接口 PersonDao.java package com ...
最新文章
- 内容协商 (Content Negotiation)
- 用于传递列表作为选项的argparse选项
- 摩托面试续2-终于得到Offer了
- java技术栈有哪些_Java程序员必备的21个核心技术,你都掌握了哪些?
- WinForm加载外部类库项目的集成开发模式
- php的autoload机制
- Python版——博客网站四 编写日志创建页
- 30个WordPress Retina(iPad)自适应主题
- python好用的第三方库_非常有用的 Python 第三方库
- java 泛型对象实例化_java泛型对象的实例化
- Python和Matlab小波分析
- 阿里笔试——重庆阿里笔试题总结
- 第十章-系统故障发生,哪些事务需要重做,哪些事务需要回滚
- php excel 导入图片,利用php实现读取excel中的图片
- python动态网页爬取——四六级成绩批量爬取
- C语言程序设计精髓 第14周——结构设计的艺术 练兵区——编程题
- 帝国cms生成html网站地图的教程步骤
- 虚幻4场景渲染源码分析概述
- python 操作word 替换字符串为图片_用python将.docx文件中的字符串替换为jpg
- 01-如何选购CPU散热器?小白装机通俗易懂的水冷/风冷CPU散热器知识