如何在C ++中重构gui和业务逻辑

时间:2013-01-03 17:52:26

标签: c++ user-interface refactoring

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

0 个答案:

没有答案