Controller クラスに handlePathChange() という仮想関数があります。
現在の URL をチェックし、適切なビューをディスパッチする必要があります。
これまでのコードは次のとおりです。
void Controller::handlePathChange()
{
if ( app->internalPathMatches(basePath) )
{
string path = app->internalPathNextPart(basePath);
if ( path.empty() ) // If it's empty it is known that the index of the controller should show up
index();
// else if ( path == ?? ) each controller has it's own routes
// call_some_unknown_function();
}
}
これをどのように一般化できますか?
私は2つのオプションについて考えていました:
- 派生クラス内の正しい関数への正しいパスに一致する、dispatch() という純粋仮想関数を呼び出します。基本的に同じコードを何度も書くことになるため、このソリューションは DRY に違反しています。
- std::function のハッシュ マップを作成しますが、URL の一部がパラメーターである場合、ビューは見つかりません。したがって、そのオプションは十分ではありません。
何か案は?