NVI for Source
The way virtual
function is used (aka, Source::Execute
) is not technically correct. We should adopt the Non-virtual Interface (NVI) pattern used by the filter interface and turn Source::Execute
non-virtual and renaming DerivedSource::Execute
to DerivedSource::DoExecute
which in turn is called by Source::Execute
as this->DoExecute
.