私は自分の OpenGL アプリケーション用の UI システムを作成していて、このデザインを持っています...
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))));
これは、特に多数の要素がある場合は、少し長く見えます。
これはデザインが悪いのでしょうか?これを乗り越える別の方法はありますか?