
设计模式
文章平均质量分 96
Rain仰望
一只正在学习中的后端菜鸟
展开
-
设计模式--超详细 手动实现 jdk动态代理 原理(4)
在前几篇文章中,我们通过指出静态代理的不足及弊端,引申出了动态代理,然后一步步的对代码进行优化。那么在jdk中的动态代理究竟是什么样子呢?本篇我们就来使用jdk的动态代理,并在使用的过程中比较一下和我们实现的动态代理有哪些区别。首先我们要自定义对方法的增强方式,即实现jdk提供的InvocationHandler接口:package cn.rain.design.proxy.demo4;...原创 2020-03-29 06:27:28 · 231 阅读 · 0 评论 -
设计模式--超详细 手动实现 jdk动态代理 原理(3)
在上一篇的中,我们通过写文件的方式,实现了用户可以无感知的获取到代理对象,但是在上一篇的最后我们也提出了这种实现方式不灵活的地方,这两个点是必须要改进的,否则也就无法称之为“动态”代理。改进1:动态生成用户所需类型的代理对象因为我们总是希望能返回我们所需要类型的代理对象,因此可以基于多态来改进此方法,因此可以将方法的参数修改成如下形式:public class MyProxy {...原创 2020-03-28 04:18:24 · 256 阅读 · 0 评论 -
设计模式--超详细 手动实现 jdk动态代理 原理(2)
上一篇讲了静态代理,我们发现静态代理需要显示的编写代理类,并且同样的代理功能(比如加日志),需要横向重复编写(即针对每个类型的接口都要使用相同代码进行实现),这会让项目整体变得十分臃肿,肯定不可取。我们来列举一下静态的弊端:横向:需要显式编写的代理类太多,针对每个类型的接口都要编写功能的代理类。 纵向:相同的代理功能(如记录时间、记录日志),在每个代理类上都要重复编写。基于静态代理的上述弊...原创 2020-03-28 04:17:42 · 178 阅读 · 0 评论 -
设计模式--超详细 手动实现 jdk动态代理 原理(1)
前言jdk动态代理想必大家都不陌生,它是面向切面编程(AOP)的理论基础,可以说当我们彻底搞清了jdk动态代理后,对aop的一些实际应用会有一个更深的层次,比如spring中的事务、日志管理、权限管理等。这一次的分享不会一上来就把jdk的Proxy拿来进行讲解,而是通过一个非常简单的小例子一步步的向jdk动态代理的实现去模拟,我个人更喜欢这种先提出问题再试图解决问题的方式,更能让我们看到设...原创 2020-03-28 04:15:03 · 271 阅读 · 0 评论 -
设计模式--单例模式
说起单例设计模式,只要是学过编程的应该可以说是无人不知了,学习和了解设计模式也大多从单例开始,你可能会把单例模式的代码很流利的写出来,但你真的了解单例设计模式吗?下面我将通过问题的引入,一步一步带大家了解单例设计模式。一、为什么要使用单例设计模式我们知道,在java中,每次使用new关键字创建一个实例后,都会在堆内存开辟一块空间,你有没有想过对于某些类来说,多个实例往往是没有必要的,并且还...原创 2018-03-17 01:25:23 · 240 阅读 · 0 评论