Groovy元对象协议(MOP)探索与方法拦截
1. 元编程与MOP简介
在Java中,我们可以在运行时使用反射来探索程序的结构,包括类、方法及其参数。但我们仍受限于已创建的静态结构,无法在运行时动态改变对象的类型或让其获得新的行为。而在Groovy中,元编程通过元对象协议(MOP)提供了这种功能。
元编程意味着编写可以操作程序(包括自身)的程序。Groovy这样的动态语言通过MOP实现了这一能力。利用Groovy的MOP,创建类、编写单元测试和引入模拟对象都变得很容易。我们可以使用MOP动态调用方法,以及即时合成类和方法,这会让我们感觉对象的类在运行时发生了改变。例如,Grails/GORM就利用这一特性为数据库查询合成方法。此外,我们还可以使用MOP在Groovy中创建内部领域特定语言(DSL),Groovy构建器也依赖于MOP。因此,MOP是一个非常重要的概念。
2. Groovy对象
Groovy提供的灵活性一开始可能会让人困惑,所以如果想充分利用MOP,我们需要了解Groovy对象和Groovy的方法处理机制。
Groovy对象是具有额外能力的Java对象,比Groovy中编译后的Java对象有更多的动态行为。而且,Groovy对Java对象和Groovy对象的方法调用处理方式不同。
在Groovy应用中,我们会处理三种类型的对象:
- POJOs(Plain Old Java Objects) :普通的Java对象,可以使用Java或Java虚拟机(JVM)上的其他语言创建。
- POGOs(Plain Old Groovy Ob
超级会员免费看
订阅专栏 解锁全文
6831

被折叠的 条评论
为什么被折叠?



