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

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

 2009-09-12 00:00:00 来源:WEB开发网   
核心提示: 清单 8. Java 语言的乘法战略publicinterfaceCalc{publicintproduct(intx,inty);}publicclassCalcByMultimplementsCalc{publicintproduct(intx,inty){returnx*y;}}publi

清单 8. Java 语言的乘法战略

   
public interface Calc { 
  public int product(int x, int y); 
} 
 
public class CalcByMult implements Calc { 
  public int product(int x, int y) { 
    return x * y; 
  } 
} 
 
public class CalcByAdds implements Calc { 
  public int product(int x, int y) { 
    int result = 0; 
    for (int i = 1; i <= y; i++) 
      result += x; 
    return result; 
  } 
} 

Java 语言迫使您创建结构来解决问题。事实上,四人组解决方案对创建结构来实现模式解决方案存在着严重的偏见 — 您是否注意到了每个模式都包含一个展示解决方案的 UML 图表?但是构建结构并不总是解决问题的最清楚或最简洁的方式。看看清单 9,它用 Groovy 实现了同样的模式:

清单 9. 用 Groovy 实现的乘法战略

   
interface Calc { 
  def product(n, m) 
} 
 
def multiplicationStrategies = [ 
  { n, m -> n * m } as Calc, 
  { n, m -> def result = 0 
   n.times { result += m } 
   result 
  } as Calc 
] 
 
def sampleData = [ 
  [3, 4, 12], 
  [5, -5, -25] 
] 
 
sampleData.each{ data -> 
  multiplicationStrategies.each{ calc -> 
    assert data[2] == calc.product(data[0], data[1]) 
  } 
}                         

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

Tags:演化 架构 紧急

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