我想重构一些用 C++ 和一些 GUI 框架编写的 GUI 应用程序。
有一些对话框类:
Class MyDialogX : public LibraryBaseDialog { };
Class MyDialogY : public LibraryBaseDialog { };
X, Y – some name, there are several such similar classes
这些类用于 gui 的东西,也用于一些业务逻辑——这违反了 SRP 原则。
我想将这两个职责分开,我决定创建另一个处理业务逻辑的类。
现在我们有这样的东西:
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 会更容易。