WEB开发网
开发学院软件开发Java 演化架构与紧急设计: 语言、表达性与设计:第 2 部... 阅读

演化架构与紧急设计: 语言、表达性与设计:第 2 部分

 2009-11-05 00:00:00 来源:WEB开发网   
核心提示: logger=newGenericLowerDecorator(newTimeStampingLogger(newLogger()))logger.log('IMPORTANTMessage')使用此修饰符调用的任何方法都将只使用小写字符串: TueMay2207:27:18ES

logger = new GenericLowerDecorator( 
  new TimeStampingLogger( 
    new Logger())) 
 
logger.log('IMPORTANT Message') 

使用此修饰符调用的任何方法都将只使用小写字符串:

Tue May 22 07:27:18 EST 2007: important message 

注意,时间戳并未使用小写形式,而 String 参数变为了小写形式。这可以在 Java 语言中实现但非常困难。事实上,使用视点(比如说通过 AspectJ)是在 Java 语言中实现此效果的唯一方法。要获取这种类型的修饰符,您必须切换为另一个带有独立编译器的语言,并为您的 Java 代码设置后期处理。虽然说并不是不可能,但其流程可能会是难以想象的麻烦。

适配器模式

四人组的书将适配器模式定义为:

将某个类的接口转换为接口客户所需的类型。适配器允许各类共同工作(由于接口不兼容,因为无法通过其他方式实现此目的)。

如果您使用过 Swing 中的事件处理程序,则应该对适配器模式有一定的了解。它用于围绕包含多个方法的事件处理接口创建适配器类,这样您就不需要创建自己的类,实现接口,以及导入大量空方法。Swing 适配器允许您子类化适配器,并且可以仅重写处理事件所需的方法。

Groovy 中的适配

从根本上说,适配器模式尝试解答的问题是:“我能否让这个方形木条适合这个圆孔?”这正是本文将要解决的问题。我将使用两个不同的实现,分别强调了表达性对于各语言的重要性。第一个实现将使用 Groovy;清单 9 给出了相关的三个类和一个接口:


清单 9. 方形木条和圆孔
interface RoundThing { 
  def getRadius() 
} 
 
class SquarePeg { 
  def width 
} 
 
class RoundPeg { 
  def radius 
} 
 
class RoundHole { 
  def radius 
 
  def pegFits(peg) { 
    peg.radius <= radius 
  } 
 
  String toString() { "RoundHole with radius $radius" } 
} 

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:演化 架构 紧急

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接