我想重构一些用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会更容易。