一、静态代理
总结:
代理模式可以在不修改被代理对象的基础上,通过扩展代理类,进行一些功能的附加与增强。值得注意的是,代理类和被代理类应该共同实现一个接口,或者是共同继承某个类
不足:静态代理实现了目标对象的所有方法,一旦目标接口增加方法,代理对象和目标对象都要进行相应的修改,增加维护成本。代理对象只服务于一种类型的对象。

定义接口类:

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)之静态代理相关推荐

  1. 浅谈Java和SAP ABAP的静态代理和动态代理,以及ABAP面向切面编程的尝试

    文章目录 Java的静态代理 静态代理的优缺点 ABAP的静态代理 Spring AOP的动态代理 JDK动态代理的优缺点 CGLIB动态代理的优缺点 ABAP CGLIB的模拟实现 ABAP Pre ...

  2. Java设计模式:(一)动态代理分析 (含静态代理)

    代理模式:为其他对象提供一种代理以控制某个对象的访问.用在:在某些情况下,一个客户不想或者不能直接访问另一个对象,而代理对象可以在客户端和目标对象之前起到中介的作用,代理对象还可以完成它附加的操作. ...

  3. Java 结合实例学会使用 静态代理、JDK动态代理、CGLIB动态代理

    前言 代理 代理 代理 代理 代理 代理 代理 代理 代理 代理 代理 代理 代理 代理 代理 代理 代理 代理 代理 代理 很多人至今都是看到 代理就懵, 静态代理.动态代理.JDK动态代理.CGL ...

  4. 代理模式详解(静态代理和动态代理的区别以及联系)

    原文链接:https://www.cnblogs.com/takumicx/p/9285230.html 1. 前言 代理模式可以说是生活中处处可见.比如说在携程上定火车票,携程在这里就起到了一个代理 ...

  5. Spring学习8之静态代理

    一.静态代理是什么? 代理模式是常用的Java设计模式,它的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息.过滤消息.把消息转发给委托类,以及事后处理消息等.代理类与委托类之间通常 ...

  6. Jerry文章《浅谈Java和SAP ABAP的静态代理和动态代理,以及ABAP面向切面编程的尝试一文的源代码》

    原文链接 导航目录 工具类ZCL_ABAP_DYNAMIC_PROXY_FACTORY 工具类zcl_abap_cglib_tool Jerry Wang的ABAP专题文章 工具类ZCL_ABAP_D ...

  7. 代理模式(Proxy)--静态代理

    1,代理模式的概念 代理模式:为其他对象提供一种代理,以控制对这个对象的访问(代理对对象起到中介的作用,可去掉功能服务或者添加额外的服务) 2,代理模式的分类 (1)远程代理:类似于客户机服务器模式 ...

  8. java设计模式--工厂模式、静态代理模式、动态代理模式

    工厂模式 代码实现: 步骤一:创建一个接口 Car.java package FactoryMode;public interface Car {public void run(); } 步骤二:创建 ...

  9. Spring学习9之静态代理再理解

    一.代理是什么? 代理的概念: 生活中的代理是很常见的,比如代购.律师.中介等,他们都有一个共性就是帮助被代理人处理一些前前后后的事情.而被代理人只需要专注做自己要做的那部分事情就可以了. Java中 ...

  10. java反射学习(2):反射与代理模式

    一 基本代理设计模式 代理模式核心思路,一个接口有两个子类,一个子类完成业务需求,另一个完成辅助功能 假设实现一个功能,张三吃饭 代码如下: 接口 PersonDao.java package com ...

最新文章

  1. 内容协商 (Content Negotiation)
  2. 用于传递列表作为选项的argparse选项
  3. 摩托面试续2-终于得到Offer了
  4. java技术栈有哪些_Java程序员必备的21个核心技术,你都掌握了哪些?
  5. WinForm加载外部类库项目的集成开发模式
  6. php的autoload机制
  7. Python版——博客网站四 编写日志创建页
  8. 30个WordPress Retina(iPad)自适应主题
  9. python好用的第三方库_非常有用的 Python 第三方库
  10. java 泛型对象实例化_java泛型对象的实例化
  11. Python和Matlab小波分析
  12. 阿里笔试——重庆阿里笔试题总结
  13. 第十章-系统故障发生,哪些事务需要重做,哪些事务需要回滚
  14. php excel 导入图片,利用php实现读取excel中的图片
  15. python动态网页爬取——四六级成绩批量爬取
  16. C语言程序设计精髓 第14周——结构设计的艺术 练兵区——编程题
  17. 帝国cms生成html网站地图的教程步骤
  18. 虚幻4场景渲染源码分析概述
  19. python 操作word 替换字符串为图片_用python将.docx文件中的字符串替换为jpg
  20. 01-如何选购CPU散热器?小白装机通俗易懂的水冷/风冷CPU散热器知识

热门文章

  1. Databing简介
  2. 无线耳机除了苹果哪个牌子好?国产蓝牙耳机推荐
  3. 数据库语言和unity技术
  4. three.js添加文字
  5. 感动:美国富人洗手间陪女佣…
  6. 2017年陕西省网络空间安全技术大赛·Mobile T1
  7. 信创|Docker容器基础知识
  8. 织音云站长扶持计划:可免费获得CDN或虚拟主机
  9. 第三章 使用 matplotlib 绘制直方图
  10. 面面具到!android重力传感器