0

セッターメソッドをフィルタリングして、それらを変更することを考える必要があります。たとえば、次のようになります。

class Dog{
    int speed;

    public int getSpeed() {
        return speed;
    }
    public void setSpeed(int speed) {
        if(speed < 100)
            this.speed = speed;
        else
            this.speed = 100;
    }
} 

私はこのような実装を覚えていません、そしてそれはおそらく合法ではありません(または少なくとも不適切です)。これの代わりに、デフォルトsetFilteredSpeed(int speed)のままにして、という名前の追加のセッターメソッドを作成する必要がありますか?setSpeed(int speed)この方法は、Beanのアプローチを壊すことはないようです。

class Dog{
    int speed;

    public int getSpeed() {
        return speed;
    }
    public void setSpeed(int speed) {
        this.speed = speed;
    }
    public void setFilteredSpeed(int speed) {
        if(speed < 100)
            setSpeed(speed);
        else
            setSpeed(100);
    }
} 

3番目のオプションは、次のような個別のフィルタークラスを準備することです。

class DogFilter{

    public int doSpeed(int speed) {
        if(speed < 100)
            return speed;
        else
            return 100;
    }
}

class Main(){
    public static void main(){
        Dog dog = new Dog();
        dog.setSpeed(DogFilter.doSpeed(165));
    }
}

それは一般的な使用法だと思います。しかし、2番目のオプションはOOPアプローチに近いようです。どちらが正しい方法ですか?

4

2 に答える 2

2

実際に無効な速度を完全に防ぎたいと仮定すると、最初のオプションが正しいアプローチです

于 2013-01-10T22:05:56.713 に答える
1

speed100 を超えてはならない場合は、最初のソリューションで十分です。他の 2 つのソリューションでは、無効 (高すぎる) を設定する可能性のあるすべてのクラスがspeed適切なメソッドを使用するようにする必要がありますが、これは非常にエラーが発生しやすいものです。

于 2013-01-10T22:07:24.013 に答える