Рассмотрим следующие 2 метода:
class A{
void Method1(){
if(!something) return;
DoX();
DoY();
DoZ();
}
class B{
void Method2(){
if(!something) return;
DoX();
DoY();
DoP();
}
}
очевидно, что суперкласс может быть написан, чтобы избежать принципа сухости:
class Super{
virtual void Method(){
if(!something) return; //problem...
DoX();
DoY();
}
}
class A:Super{
override void Method(){
inherited Method();
DoZ();
}
}
class B:Super{
override void Method(){
inherited Method();
DoP();
}
}
Проблема в том, что проверка чека где-то заканчиваетсяв первом примере, тогда как во втором он будет исчерпан из метода суперкласса, но в производном классе выполните либо DoZ (), либо DoP ();
Мой вопрос: как лучше всего решитьтакого рода проблемы?Тот, что приходит мне в голову, делает метод суперкласса функцией, возвращающей bool
virtual bool Method(){ if(!something) return false;}
override bool Method(){ if(!inherited Method()) return;}
, это лучший обходной путь?