【发布时间】:2011-04-25 15:22:13
【问题描述】:
我写了一个简单的类来演示链式方法设计:
public class Cal {
private Cal(){}
private boolean isCheckArguments = false;
public static Cal useAbs() {
return new Cal(){
@Override int check(int i) {
return Math.abs(i);
}};
}
public static Cal useNormal() {
return new Cal();
}
public Cal checkArguments() {
isCheckArguments =true;
return this;
}
int check(int i){ return i;}
public int plus(int i, int j) {
if(isCheckArguments && i<j){
throw new IllegalArgumentException("i<j!");
}
return check(i+j);
}
}
所以客户端代码可以是:
Cal cal = Cal.useAbs().checkArguments();
int sum = cal.plus(100,2);//IllegalArgumentException occurs
Cal cal2 = Cal.useAbs();
int sum2 = cal.plus(-100,2);//98
Cal cal3 = Cal.useNormal();
int sum3 = cal.plus(-100,2);//-98
我的问题是:这是一个合理的设计吗?比较:int plus(int a, int b, boolean useAbs, boolean checkArguments)。谢谢!
【问题讨论】: