Collecting Parameter模式

  作为一种不太常被提及的设计模式,Collecting Parameter并太为人所熟知。我对这一模式的认识最初来自《JUnit In Action》一书2.4节对TestResult的介绍。JUnit中的TestResult就是Collecting Parameter模式的应用。简单来讲,当我们需要收集一连串多个方法的返回值时,我们需要在这些方法中传入一个对象,用以收集返回的结果。目前在oobbs系统的DomainEvent机制的设计中我又遇到了这一模式的一个典型应用场景。当一个DomainObject触发一个事件时,相应的监听器会监听到这个事件然后做出相应的处理。DomainObject有时需要得到处理的结果,这时我们可以让监听器的处理方法以返回值的形式返回处理结果,但从事件处理的机制来看这有些怪异,因为一般意义上,监听器的处理方法是没有返回值的,如果事件源有需要改变的地方监听器会在传过来的event对象得到事件源的引用,进而可以对其直接操作。但是很多时候,DomainEvent的监听器需要返回的是DomainObject业务方法在计算过程中需要的中间值(local variable),DomainObject并没有相应的field. 更重要的一个原因是:有时候,一个domain event很有可能会被两个以上的listener接连处理,有时候,后续的listener可能需要知道前一个listener处理的结果,在此情况下,Collecting Parameter显得更加必要。

你可能感兴趣的:(设计模式,JUnit,domain,action)