注解例题

简介:

注解例题:

使用注解可以优化动态代理模式,能够让用户更简单地编写动态代理模式的代码,并且能够自动搜索需要代理的类,只需要在类上配置好注解就能自动生产对象,还能够过滤不需要监听的方法,用户只需要写自己的业务代码即可。

编写这样的一个优化机制需要四个类来实现,注解类、搜索类、对象工厂类和处理类。

 

第一步编写注解类,声明一些需要配置的信息:

注解类代码示例:

1cdf52da28c1265a51fd59f98959d152.png



第二步编写搜索类,用于搜索指定包下的类:

搜索类代码示例:

bae3a189a9a87607fc4603a8636e4a7d.png

3030a282ffdb9136a83d38d576be8dd8.png

657a34565ec2033d11591eb81a3d3485.png

faa5e5eb833a273c343952c542a15816.png

917660fced7976e21f3cd81d2be27d4c.png

baa57fc11eb2a39a2a476240d6bf6cfc.png





第三步编写对象工厂类:

对象工厂类代码示例:

1c9d96706bc18475b2d37f4687600816.png

54e808bd79f3eb1427dde92ee40ed9a2.png




第四步编写处理类:

处理类代码示例:

a893a8aceef7f15523f7f16b58b49134.png

cb75c93a04c248dbeae7b5dad9b90240.png


优化动态代理模式的代码编写完成后,就可以编写用户的代码来测试一下是否没问题,步骤还是和之前的动态代理模式的步骤一样,只是简化了很多代码的编写:

 


第一步编写接口,声明需要被实现的方法:

接口代码示例:

ae1f919118ae03f438a2cbc5c2dd82d8.png





第二步编写实现类,实现接口的方法,但是和之前不一样的是需要写上注解来配置信息:

实现类代码示例:

53316c0c9a60cc97b13c335a5b26caad.png



第三步编写处理类,这个处理类不需要实现InvokeHandler接口,只需要写一个invoke方法即可:

处理类代码示例:

3a464cd27984e598da20f602a4211b56.png



第四步编写测试类:

测试类代码示例:

417208b882e2e84bf2e44ccd0319ea8f.png


运行结果:

82649e3c9bc6f55287cc1822821e8a55.png


从运行结果可以看到toString方法和study方法都被监听了,现在我只想监听study方法,不想监听其他的方法,这时候在实现类中配置好不需要过滤的方法名即可,其他代码不需要变动:

3995956a3c87e3161c1e759865364e64.png


运行结果:

a1d851f9b8c97d82fb50a408d4cf282f.png

从运行结果可以看到,toString方法被过滤掉了,是直接调用的,没有经过动态代理模式。




本文转自 ZeroOne01 51CTO博客,原文链接:http://blog.51cto.com/zero01/1976635,如需转载请自行联系原作者

相关文章
|
7月前
|
设计模式 安全 C++
奇异递归模板模式
CRTP(Curiously Recurring Template Pattern,奇异递归模板模式)是一种通过模板类与继承结合实现静态多态性的设计模式。其核心思想是让一个类通过模板参数继承自一个模板类,且该模板参数即为类本身。CRTP能够实现静态多态性,提高运行效率,同时提供代码复用、类型安全及避免菱形继承问题等优点。在C++示例中,`Base`模板基类提供通用功能,`Derived1`和`Derived2`分别继承自`Base<Derived1>`和`Base<Derived2>`,并实现各自的具体功能。
|
10月前
质数类判断方法(蓝桥杯,循环分支题型)
质数类判断方法(蓝桥杯,循环分支题型)
|
11月前
|
算法
class039 嵌套类问题的递归解题套路【算法】
class039 嵌套类问题的递归解题套路【算法】
150 0
从工厂方法到注解的小例子
这里的前几个过程就不符代码了,请读者自行补充;只附上第四版,通过注解替换工厂方法实现自动化的小例子
|
编译器 C++
【C++知识点】嵌套类和局部类
【C++知识点】嵌套类和局部类
147 0
|
Java
Java实现回文数四种方法
Java实现回文数四种方法
495 0
|
机器学习/深度学习 C++
看代码求结果练习题(递归例题)
看代码求结果练习题(递归例题)
110 0
看代码求结果练习题(递归例题)
|
算法 C++
C++ 基础复习系列2(打印图形类(循环)经典问题类)
C++ 基础复习系列2(打印图形类(循环)经典问题类)
C++ 基础复习系列2(打印图形类(循环)经典问题类)
|
存储 编译器 C语言
搞懂C/C++ 运算符优先级
搞懂C/C++ 运算符优先级
542 0