我正在为游戏引擎(C ++)设计GUI(图形用户界面)系统。
想法是创建一个GUI控制器的层次结构,如Focusable,Hoverable,Dragable等。每个GUI组件都可以附加多个控制器,它们可以修改组件的行为。
我认为它提供了灵活的系统并防止代码重复。同一GUI类的不同实例可以具有不同的复杂行为(甚至可以动态地更改它),因此这种方法看起来很实用。
另一种选择是在基本GUI组件类中添加聚焦,悬停,拖动等标志。它看起来像开销,而不是那么灵活。
另一个解决方案是使用Decorator模式并使用FocusDecorator,HoverDecorator等包装对象。维护这样的系统看起来有点困难。
问题:我的解决方案有哪些缺陷?您可能在GUI系统中看到过更好的方法吗?实施这种灵活复杂系统的最佳方法是什么?
答案 0 :(得分:0)
为什么不用“策略”模式解决不同组件行为的问题?
答案 1 :(得分:0)
你的解决方案非常好,说实话,我认为这正是Decorator设计模式的内容,但是在C ++中你有更好的实现技术。您可以轻松地使用基于策略的设计来创建GUI组件模板类,并添加组件行为特征类作为其参数,然后从参数继承。