2010-09-14 58 views
0

我正在处理一个工具栏类型的应用程序。我目前的计划是创建一个“工具栏”类和一个“按钮”类。工具栏类将为工具栏上的每个项目创建一个“按钮”的实例。 “按钮”类的每个实例都将处理其按钮的GUI事件(鼠标悬停,点击等)。我也想要全局选项,这些选项会影响这些GUI事件的处理方式(鼠标悬停在某种颜色上的高亮部分等)。我的问题是我不确定如何让每个实例“知道”全局选项的当前值。如何将全局应用程序设置共享给成员对象?

什么是处理这个问题的好方法?我想到的一个想法是创建一个“Options”类,在主工具栏类中创建它的单个实例,然后在其构造函数中传递对按钮类的引用。

回答

0

收集Options类中的所有选项本身就很不错。

如果按钮由于其他原因需要知道它们在哪个工具栏中,它们将保留一个引用(在C++中用于引用读“指针”,以防它需要可重新复位;-)到其父工具栏,并且在工具栏类中的一个简单的只读访问器,以便从许多角度返回引用/指向共享选项对象的引用/指针会更好(例如,通过仅切换一组选项就可以快速从一组选项快速切换到另一组选项工具栏中的一个指针[[或参考]])。

但是,如果按钮没有另外需要他们的创造者工具栏任何引用,我不会添加一个(循环依赖,如果工具栏也需要保持的按钮参考)只是为了这个目的。相反,如果您确定“只能有一个”(所有工具栏中的所有按钮都使用相同的选项),那么工具栏类中的静态方法(同样,只是简单地将引用返回给“唯一”的选项对象)就足够了。

我喜欢“穿过工具栏”的想法(使用常规方法或静态工具),而不是强制每个按钮添加单独引用“one and only option”所需的状态量目的”。当然,Singleton模式是另一个类似的选择(例如通过在选项类的静态方法),但我有一些反感为DP作为一个原则问题,所以我宁愿“去通过工具栏”。 ..

相关问题