public interface Adder {
public int getSum();
}
public class AdderImpl implements Adder {
private int v1;
private int v2;
public AdderImpl(final int v1, final int v2) {
if (validate(v1,v2) == false) {
throw some exception;
}
this.v1 = v1;
this.v2 = v2;
}
public int getSum() {
return this.v1+this.v2;
}
}
實施例2:
public interface Adder {
public int getSum(final int v1,final int v2);
}
public class AdderImpl implements Adder {
public int getSum(final int v1, final int v2) {
if (validate(v1,v2) == false) {
throw some exception;
}
return v1+v2;
}
}
實施例3:
public interface Adder {
public int getSum();
}
public class AdderImpl implements Adder {
private int sum;
public AdderImpl(final int v1, final int v2) {
if (validate(v1,v2) == false) {
throw some exception;
}
this.sum = v1 + v2;
}
public int getSum() {
return this.sum;
}
}
我在這裏我的簡化生產場景到這個簡單的類和interface.Example 1具有不利的是,如果有人眼球接口,他將無法知道接口的輸入。例2克服了這個優點。通過查看getSum接口,用戶將能夠知道哪個接口起作用的輸入。然而,如果稍後某人在示例2設計中爲該接口添加了另一個函數,並且使用了這兩個接口,則會重複輸入驗證。如果調用者多次調用getSum,則示例3給出了不計算總和的明顯優勢。對我來說,他們三人現在都在工作。我在示例1和示例2之間更混淆,輸入驗證的責任應該與構造函數(示例2)或更容易理解的接口應該是首選(示例1)?
你是什麼意思「更好」?如何添加一些要求或標準? – OldProgrammer 2013-04-30 13:40:24
這取決於你使用它們。 – SLaks 2013-04-30 13:40:27
這不應該繼續[Code Review](http://codereview.stackexchange.com/)?顯然,有一些更詳細的信息。 – MikeTheLiar 2013-04-30 13:41:02