我正在为一个游戏引擎(C++)设计图形用户界面( GUI )系统。
其思想是创建GUI控制器的继承性,如可聚焦、可Hoverable、可拖动等,每个GUI组件都可以附加多个控制器,修改组件的行为。
我认为它提供了灵活的系统,并防止代码重复。同一个GUI类的不同实例可能具有不同的复杂行为(可能是,甚至是动态地更改它),因此这种方法看起来很实用。
另一种选择是在基本GUI组件类中添加聚焦、悬停、拖动等标志。它看起来像头顶,没有那么灵活。
另一种解决方案是使用Decorator模式并使用FocusDecorator、HoverDecorator等包装对象。维护这样的系统似乎有点困难。
问题:,我的解决方案中有哪些缺陷?也许你在GUI系统中看到了一种更好的方法?实施这种灵活的复杂系统的最佳方法是什么?
发布于 2010-05-17 10:27:22
老实说,您的解决方案非常好,我认为这正是Decorator设计模式的意义所在,但是在C++中,您有更好的实现技术。您可以很容易地使用基于策略的设计来创建GUI组件模板类,并添加组件行为特征类作为其参数,然后从参数继承。
发布于 2010-05-17 09:32:17
为什么不用“策略”模式来解决组件行为的变化问题呢?
https://stackoverflow.com/questions/2847872
复制相似问题