使用哪种模式来执行新代码,只需添加基类的新子类?



我正在尝试找出一种模式,以避免在类似于下面这种情况的情况下代码重复:

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。我希望能够通过扩展基类来添加新操作,而无需创建新方法并在验证方法中添加其调用及其错误处理。

我建议你使用验证装饰器(这是一个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;
}
}

如果不扩展整个类,就无法真正从基类扩展单个函数。 您可以做的一件事是将验证方法放在一个单独的类中,并通过其他两个类对其进行扩展。您可以做的另一件事是将验证作为抽象类并在子类中随心所欲地实现它,这种方法的缺点是您必须在每个子类中提供实现。

最新更新