
元数据编程
文章平均质量分 84
hivon
这个作者很懒,什么都没留下…
展开
-
简化繁琐的赋值——反射在Jdbc和Struts中的应用
缘起在Jdbc应用中,我们经常需要有这么样的一个Javabean:当我们从数据库里取值时,我们希望把对应的值赋给Javabean,而后再操作Javabean进行各种业务处理;而我们保存数据的时候,也希望把经过业务处理后的值赋给Javabean,再由该Javabean与Jdbc交互,将数据保存在数据库里。而在Struts应用中,我们经常要跟ActionForm或DynaActionForm打交道,例原创 2005-04-08 12:36:00 · 2664 阅读 · 0 评论 -
Groovy探索之MOP 五 针对接口类型的动态性
Groovy探索之MOP 五 针对接口类型的动态性 这里所说的接口类型,在Java语言和Groovy语言中,当然是既包括了基类类型和接口。所谓"接口类型的动态性",指的是在运行期内给基类或接口动态的添加方法,使得基类以及它的子类、接口的实现,都能访问这些方法。这个功能一向是我比较感兴趣的一个功能。因为我们在编程的实践中,会使用各种各样的应用API,还有JDK,在使用它们的过程中,原创 2009-04-20 07:58:00 · 2794 阅读 · 2 评论 -
Groovy探索之MOP 七 运行期内的方法和属性分析
Groovy探索之MOP 七 运行期内的方法和属性分析 在Groovy语言里,运行期内的方法和属性分析有三种方式,它们分别是:第一, 继承自Java语言的反射方式。第二, 使用"respondsTo"和"hasProperty"方法。第三, 使用"hasMetaMethod"和"hasMetaProperty"方法。以上三种方法都能在运行期内原创 2009-04-24 07:54:00 · 2630 阅读 · 1 评论 -
Groovy探索之MOP 八 运行期内给类和对象添加属性或方法
Groovy探索之MOP 八 运行期内给类和对象添加属性或方法 我们都知道,在Groovy语言中,我们可以使用MOP特性在运行期内添加属性或方法。这种添加包括两个层面的添加:第一, 是给一个类添加属性或方法。也就是说,如果我们在运行期内给一个类添加了属性或方法,那么添加了以后,所有这个类实例化的对象,都将拥有了这个属性或方法。第二, 第二,是原创 2009-04-28 07:56:00 · 2827 阅读 · 1 评论 -
Groovy探索之MOP 九 Interceptor 一
Groovy探索之MOP 九 Interceptor 一 近几年以来,AOP(面向方面的编程)得到了广泛的应用,我们把它应用到例如打印日志、权限控制等各个方面。而在实现AOP的时候,我们一般都借助于工具,如Spring AOP等等。当然,我们借助于工具一般都用在实现系统级的AOP上,这种实现一般都要借助于配置文档来实现。当我们需要实现较小原创 2009-04-30 07:59:00 · 3089 阅读 · 2 评论 -
Groovy探索之MOP 十 Interceptor 二
Groovy探索之MOP 十 Interceptor 二 在本系列的《Groovy探索之MOP 九 Interceptor 一》中,我们已经详细的介绍了一个简单的拦截器类的方方面面,使得我们初步有了拦截器的基础。本篇需要在前面的拦截器类的基础上,进一步用拦截器类来实现我们的AOP编程。首先,我们在本系列的第一篇中,所拦截的方法都是固定的方法原创 2009-05-07 07:53:00 · 1949 阅读 · 4 评论 -
Groovy探索之MOP 十一 运行期内覆盖invokeMethod
Groovy探索之MOP 十一 运行期内覆盖invokeMethod 我们很早就会使用Groovy语言的hook,即"invokeMethod"方法和其他的几个方法。我们会在一个类中实现"invokeMethod"方法,用来分派所有的或部分的在运行期内调用的该类实例的方法。这些我们在《Groovy探索之MOP 一 invokeMethod和methodMissi原创 2009-05-12 08:03:00 · 2541 阅读 · 0 评论 -
Groovy探索之MOP 六 运行期内添加构造器和静态方法
Groovy探索之MOP 六 运行期内添加构造器和静态方法 构造器是我们喜欢重载的一个方法,因为我们在实例化一个类的时候,会遇到各种各样的情况,比如在某些情况下,一系列类的实例可能有一些相同值的属性,这时候,我们在实例化对象时,就不希望把这些相同的值分别注入到每一对象中,这样的工作很繁琐。这时候,我们就会重载构造器,但一些时候,比如一些Bean对象,它们的属性很原创 2009-05-13 08:06:00 · 3285 阅读 · 1 评论 -
Groovy探索之反射
Groovy探索之反射 我们知道,在Java语言中,我们能够获取到Java语言的动态性,主要是通过它的反射机制来实现的。而在Groovy语言中,我们将会有很多方式来获取它的动态性,比如MOP等等。因此,在Groovy语言中,我们需要在运行期内调用某个方法,将不会使用反射机制,虽然我们仍然能够在Groovy语言中使用原创 2009-05-15 08:05:00 · 9630 阅读 · 1 评论 -
Groovy探索之MOP 十三 Interceptor 三(2)
Groovy探索之MOP 十三 Interceptor 三(2) 其实,阻止拦截的使用像在《Groovy探索之MOP 十三 Interceptor 三(1)》中的最后一个例子那像的使用并不多,更多的是在使用拦截器的客户那里决定是否使用拦截器。还是上一篇的那个例子: class Hello { def hello(name)原创 2009-05-19 08:07:00 · 4671 阅读 · 0 评论 -
Groovy探索之MOP 十三 Interceptor 三(1)
Groovy探索之MOP 十三 Interceptor 三(1) 本篇的“Interceptor”,主要是来说说拦截器的阻止拦截的问题,这个问题是我们自定义拦截器时经常要遇到的挑战之一。与阻止拦截很近的一个意思是不拦截,即我们可以拦截某个方法,但我们不对拦截做任何实质性的动作,即我们简单的将拦截的动作放行。这是一种被动的不拦截行为。而我们的阻原创 2009-05-19 08:00:00 · 4743 阅读 · 0 评论 -
Groovy探索之MOP 十二 方法的调用顺序
Groovy探索之MOP 十二 方法的调用顺序 我们知道,除了使用hook来拦截方法以外,我们还可以通过各种方式来实现方法。如,我们可以在类里直接实现方法;我们可以通过ExpandoMetaClass在运行期内添加方法;我们还可以通过ExpandoMetaClass在运行期内单独给一个对象添加方法。所有的这些直接添加方法的途径,如果存在hook的话,原创 2009-05-22 07:57:00 · 4848 阅读 · 2 评论 -
Groovy探索之MOP 十四 对Java类使用Groovy语言的MOP
Groovy探索之MOP 十四 对Java类使用Groovy语言的MOP 既然Groovy语言是Java语言的扩展,那么我们在使用Groovy语言的时候,就很难与Java语言真正脱得了干系,那怕我们是在做一个纯Groovy语言的项目,如Grails项目。我们可能在Groovy代码中会用到遗留的Java类和包;也可能是为了性能的原因,我们不得不在Groovy语言中原创 2009-05-25 08:03:00 · 6741 阅读 · 2 评论 -
Groovy探索之MOP 十五 方法名的动态性(2)
Groovy探索之MOP 十五 方法名的动态性(2) List scores = [new Student(no:123,name:Tom,chinScore:90,mathScore:99,englScore:60,physScore:88,chemScore:96)] scoresnew Stu原创 2009-05-26 08:34:00 · 5508 阅读 · 0 评论 -
Groovy探索之MOP 十五 方法名的动态性(1)
Groovy探索之MOP 十五 方法名的动态性(1) 到目前为止,我们的《Groovy探索之MOP》系列已经谈到了使用ExpandoMetaClass的方方面面,但值得注意的是,我们通过ExpandoMetaClass给一个类在运行期内添加一个方法,不管是普通方法还是静态方法,我们都是添加一个确定方法名的方法。即我们添加一个方法名为A的方法,然后才能使用这个原创 2009-05-26 08:25:00 · 5732 阅读 · 0 评论 -
Groovy探索之MOP 四 使用ExpandoMetaClass来实现Mixin
Groovy探索之MOP 四 使用ExpandoMetaClass来实现Mixin 国内很多的文章都在说Groovy语言的Mixin机制就是Groovy语言的Categories机制。其实,在外面的Blog上,大量有人在讨论Groovy语言应该如何实现它自己的Mixin机制,这就是说明Groovy语言的Mixin机制还没有定型,处在讨论之中。Categor原创 2009-04-07 07:53:00 · 2643 阅读 · 1 评论 -
Groovy探索之MOP 三 Class、MetaClass和ExpandoMetaClass
Groovy探索之MOP 三 Class、MetaClass和ExpandoMetaClass Class当然是Groovy语言从Java语言继承来的,这就是说Groovy语言也继承了Java语言的反射机制。这意味着我们能够像在Java语言里使用反射那样,在Groovy语言里写出诸如下面的代码:import java.lang.reflect.Metho原创 2009-03-31 07:58:00 · 4997 阅读 · 2 评论 -
动态的工厂模式
工厂模式可以说是我们应用得最广泛的设计模式之一。所谓工厂模式,就是不是由客户类来实现类的实例,而是由工厂来实现类的实例。如没有应用工厂模式的客户类Client要实现对接口类Parent和他的实现类Son的使用,必须在Client里面实现如下代码:Parent p = new Son();这种依赖关系为:从上面的图可以看出,客户类Client同时依赖于接口类Parent及它的实现类Son,这种依赖太原创 2005-04-10 23:01:00 · 8078 阅读 · 2 评论 -
使用Java5特性来简化反射编程
使用Java5特性来简化反射编程 作者:R.J. Lorimer 感谢引入var-ar翻译 2006-01-24 16:25:00 · 2289 阅读 · 1 评论 -
泛型与反射
泛型与反射 研究泛型与反射之间的关系非常有趣。我们知道,反射和泛型都是Java的一种动态技术。而不像继承和多态,是面向对象的技术。可以这么说,反射和泛型都像是为了弥补像继承和多态这些面向对象技术的不足而产生的。模式多是建立在面向对象技术基础上的原创 2006-10-10 09:23:00 · 5424 阅读 · 1 评论 -
校验值对象——应用Visitor模式和反射
校验值对象 ——应用Visitor模式和反射翻译 2006-08-14 09:09:00 · 4566 阅读 · 0 评论 -
Groovy探索之invokeMethod方法
Groovy探索之invokeMethod方法 我们知道,在Java语言中,所有的Java类都继承了Object对象。通过Object对象,所有的Java类都隐藏的实现了“equals”等方法。同样,在Groovy语言中,所有的Groovy类都隐藏的实现了GroovyObject接口,这样,我们的Groovy类就隐藏的实现了很多的方法,如“原创 2008-04-27 16:28:00 · 7721 阅读 · 7 评论 -
Groovy探索之运算符的重载 二
Groovy探索之运算符的重载 二 前一篇详细的说了说算术运算符和关系运算符的重载,这篇要说说赋值运算符和取值运算符,即“.”运算符的重载。还是以前一篇的Yuan类来作为例子。class Yuan{ def num def toString() { this.num }}原创 2008-07-15 07:55:00 · 2891 阅读 · 4 评论 -
Groovy探索之MOP 一 invokeMethod和methodMissing方法
Groovy探索之MOP 一 invokeMethod和methodMissing方法 终于要谈到Groovy语言的MOP特性了,我在前面的章节中零星的谈到了它,却始终没有系统的来谈到它。这是因为Groovy语言的MOP特性实在是太灵活了,比如本章节要谈到的“invokeMethod”和“methodMissing”方法,它们的功能有很大的相似之处,而区别却相当原创 2008-10-06 08:01:00 · 4316 阅读 · 0 评论 -
Groovy探索之闭包 八
Groovy探索之闭包 八 在Java编程世界,有两个设计模式又简单、又常用,而且实现方式也很相似,这就是命令模式和策略模式。有关这两个模式的讲解,在网络上真是汗牛充栋,大家可以随便搜索一下,就是一大堆。可以简单的说,命令模式就是对行为或者命令的封装,而策略模式则是对算法的封装。对于行为或是说命令,还有算法,在编码的实现上原创 2008-10-08 08:02:00 · 2661 阅读 · 0 评论 -
Groovy探索之delegate关键字 一(1)
Groovy探索之delegate关键字 一 delegate关键字在Groovy语言中应用广泛,大体可以分为两个地方的使用,即在方法中使用和在闭包中使用。本系列计划用两个篇幅来谈谈delegate关键字的使用,本篇说说delegate关键字在闭包中的使用,下一个篇幅主要说说它在方法中的使用。在Groovy语言的官方文档上,在谈到闭包的部分的时候,是这样描述this、owner和原创 2008-10-27 08:05:00 · 6143 阅读 · 0 评论 -
Groovy探索之delegate关键字 一(2)
这个例子首先要从一个GroovyBean说起: class Person{ String name} 这是一个很简单的GroovyBean类,下面,我们为这个GroovyBean类做了一个Builder类,如下: class PersonBuilder { def persons = [] def p原创 2008-10-27 08:11:00 · 4886 阅读 · 1 评论 -
Groovy探索之方法调用的动态性
Groovy探索之方法调用的动态性 在我以前的文字中,我一再强调,Groovy语言的方法也和Java语言的方法一样,是要依赖于类和对象的,因此,方法不能被单独作为对象传递和循环。同时,在《Groovy探索之闭包 八》中,我们提出来一个能让方法进行传递和循环的一个替代方案,这就是使用闭包来代替方法。其实,Groovy语言的方法虽然也依赖于原创 2008-10-30 08:07:00 · 6633 阅读 · 1 评论 -
Groovy探索之Expando类
Groovy探索之Expando类 Expando类是Groovy语言中的一个相当有趣的类,它的作用类似于GroovyBean类,但比GroovyBean类更加灵活;同时,它还更类似于Map类,但也比Map类更加灵活。我们先来看一个简单的例子: def e = new Expando()原创 2008-11-05 07:52:00 · 4026 阅读 · 2 评论 -
Groovy探索之MOP 二 对类属性的各种操作
Groovy探索之MOP 二 对类属性的各种操作 我们谈到MOP,即“元对象协议”,就是对类或对象的各个元素,如名称、方法、属性等等,在运行期进行实时变化,如修改方法名、属性名,动态增加方法、属性等等的一类编程的统称。比如前面我们所谈到过的“invokeMethod”和“methodMissing”两个方法,就可以用来使得我们在运行期动态原创 2008-11-04 08:03:00 · 4136 阅读 · 0 评论 -
Groovy探索 DSL在Calendar类上的实践 一
Groovy探索 DSL在Calendar类上的实践 一 作为一个使用者,我不喜欢Java平台的Calendar类;同样,我也不喜欢Groovy平台的Calendar类。都是基于同样的原因,使用起来非常不方便。同时,Groovy语言的DSL极大的吸引了我。使得我每每在使用Calendar类的时候,都会想到我可否使用DSL来改造这个Calenda原创 2009-03-19 08:03:00 · 3449 阅读 · 1 评论 -
Groovy探索之MOP 十六 使用Interceptor实现简单的观察家模式
Groovy探索之MOP 十六 使用Interceptor实现简单的观察家模式 观察家模式是我们比较常用的一种模式,也是其他的一些常用模式的基础,比如MVC模式就是一种以观察家模式为基础的模式。在Java语言中,观察家模式的实现十分的简单,就是让被观察者继承Observable类,而让观察者实现Observer接口。这些基础的用法,都在我的文字——《螳螂捕蝉、黄雀在后——从原创 2009-06-01 07:58:00 · 5558 阅读 · 0 评论