我需要对setter方法进行一些过滤并考虑修改它们,例如:
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)
的其他setter方法,而不是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);
}
}
第三个选项是准备单独的过滤器类:
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));
}
}
这是常见的用法,我认为;但第二种选择似乎更接近OOP方法。哪种方式正确?
答案 0 :(得分:2)
假设您确实希望完全阻止无效速度,您的第一个选择是正确的方法
答案 1 :(得分:1)
如果speed
从不高于100,那么第一个解决方案就足够了。使用其他两个解决方案,您需要确保所有可能设置无效(太高)speed
的类使用适当的方法,这非常容易出错。