0

次のコードがあります。

public interface Person {
    /***
     *@Throws Exception x must be greater than 0 ****/
    setAge(int x);
}
public class Man implements Person {
    setAge(int x) {
        if(x <= 0) thrown new Exception("x <= ");
    }
}

DRY の原則を破ったのは、すべての実装でチェックを繰り返し、ドキュメントもそれを繰り返しているためです。この状況で引数を確認する最良の方法は何ですか?

4

3 に答える 3

1

これはインターフェースであり、Java 7 以前のインターフェースには実装を含めることができないため、設計上の決定を行う必要があります。インターフェイスの剛性が必要ですか、それとも抽象クラスで実現できますか?

このメソッドの抽象クラスを使用できる場合は、そうすることをお勧めします。これにより、関心のある値の実装 (および取得) が少し簡単になります。

public abstract class Person {
    protected int age;

    public void setAge(int age) {
        if(0 > age) {
            throw new IllegalArgumentException("Age must be greater than 0");
        }
        this.age = age;
    }
}

上記の実装では、メソッドを子クラスに実装する必要はなく、同じことを繰り返すリスクはありません

于 2014-11-30T06:36:47.690 に答える