tbr*_*uhn 8 java validation inheritance design-patterns
我想在将它们传递给系统的其他部分之前验证我的域对象.我要验证的所有对象共享相同的接口.问题是我无法弄清楚如何以一种好的方式写出来.我不想在我的值对象中移动验证.但我不想被迫做一个instanceOf-check.
一个例子:
public interface Vehicle {}
public class Car implements Vehicle {}
public class MotorBike implements Vehicle {}
public interface VehicleValidator {
void validate();
}
public class CarValidator implements VehicleValidator {
@Override
public void validate() {}
}
public class MotorBikeValidator implements VehicleValidator {
@Override
public void validate() {}
}
public void process(Vehicle vehicle) {
//TODO: validate vehicle
doSomething(vehicle);
}
Run Code Online (Sandbox Code Playgroud)
在Scala中,我会做类似于http://debasishg.blogspot.se/2010/06/scala-implicits-type-classes-here-i.html的内容, 但这些语言结构在Java中是不可能的.
正如 Oli Charlesworth 在他的评论中所写,这通常是通过访问者模式完成的。http://en.wikipedia.org/wiki/Visitor_pattern
wiki 页面上有很好的 java 示例。
| 归档时间: |
|
| 查看次数: |
834 次 |
| 最近记录: |