セッターメソッドをフィルタリングして、それらを変更することを考える必要があります。たとえば、次のようになります。
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アプローチに近いようです。どちらが正しい方法ですか?