C++で記述されたGUIアプリとGUIフレームワークをリファクタリングしたいと思います。
いくつかのダイアログクラスがあります:
Class MyDialogX : public LibraryBaseDialog { };
Class MyDialogY : public LibraryBaseDialog { };
X, Y – some name, there are several such similar classes
このクラスは、GUIや一部のビジネスロジックに使用されます。これはSRPの原則に違反します。
これら2つの責任を分離したいと思い、ビジネスロジックを処理する別のクラスを作成することにしました。
今、私たちはこのようなものを持っています:
Class MyDialogX : public LibraryBaseDialog
{
BusinesLogic *pLogic; // used to handle logic, called as a response to gui
// change, there is only one such object for all MyDialogX(Y) objects
// ... some other code...
// this method could be moved to constructor as well, only for
// short example here...
void setLogic(BusinesLogic *p) { pLogic = p; }
}
これはそのようなリファクタリングを行うための良い方法ですか?
たぶん、いくつかのより良いオプションがありますか?
前提条件:「businessLogic」オブジェクトをシングルトンにしたくありません。LibraryBaseDialogクラスを変更できません。
このリファクタリングは非常に小さいはずなので、システム全体を再設計したくないJ
さらに進んで、他のクラスを作成することもできます。
Class LogicHolder // basic features related
{
BusinesLogic *pLogic;
}
そして今、MyDialogXはこのクラスからも継承します:
Class MyDialogX : public LibraryBaseDialog, public LogocHolder
{ }
そうすれば、いくつかの同様のDialogクラス間でpLogicを管理しやすくなります。