我正在尝试找出一种模式,以避免在类似于以下情况的情况下重复代码:
std::list<int> error_list;
void validate()
{
if( validate_0001() == false )
{ error_list.push_back(1); }
if( validate_0002() == false )
{ error_list.push_back(2); }
...
}
“ validate”方法在负责执行不同动作的类中是公共的,在示例验证中,每个动作都有唯一的ID。我希望能够通过扩展基类来添加新操作,而无需创建新方法并将其调用及其错误处理添加到validate方法内部。
答案 0 :(得分:0)
我建议您使用验证修饰符(这是一个Java示例)
abstract class Validation {
final List<Integer> list;
Validation(List<Integer> list) {
this.list = list;
}
public abstract int error();
}
class FirstValidation extends Validation {
public FirstValidation(List<Integer> list) {
super(list);
}
@Override
public int error() {
return 0;
}
}
答案 1 :(得分:-1)
如果不扩展整个类,就不能真正地从基类扩展单个函数。 您可以做的一件事是将验证方法放在一个单独的类中,并将其扩展到另外两个类中。您可以做的另一件事是将验证作为抽象类进行,并在子类中随意实现它,这种方法的缺点是您必须在每个子类中提供实现。