我正在为我的 OpenGL 应用程序创建一个 UI 系统,并且我有这个设计......
用户界面管理器:
class UIManager {
public:
UIElement *add(UIElement *element);
}
示例元素:
class Button : public UIElement {
public:
Button(UIElement *parent, const string &caption, const Point &position);
}
现在每次我想实例化一个按钮并保留指向它的指针时,我都必须这样写:
// somewhere in the header file
UIManager *manager;
Button *button1, *button2;
// in cpp
button1 = static_cast<Button *>(manager->add(new Button(0, "Enter", Point(10, 10))));
button2 = static_cast<Button *>(manager->add(new Button(0, "Exit", Point(10, 50))));
这对我来说看起来有点冗长,尤其是当我有十几个元素时。
这是一个糟糕的设计吗?还有其他方法可以克服吗?