演化架构与紧急设计: 语言、表达性与设计:第 1 部分
2009-09-12 00:00:00 来源:WEB开发网清单 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])
}
}
更多精彩
赞助商链接