【发布时间】:2013-01-10 22:04:08
【问题描述】:
我需要对 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) 保留为默认值吗?这种方式似乎不是破豆的方式。
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 方法。哪种方式是正确的方式?
【问题讨论】:
标签: java oop javabeans setter getter-setter