我一直问自己的一个问题是面向对象编程,如何以面向对象的方式传递设置和属性等数据?
例如,大多数程序都有选项,比如你可以选择设置撤消级别。必须获取此值,然后将其设置为新值。如果这些设置保存在xml文件中,则应用程序的该部分(选项对话框)仍需要某种xml解析器来加载数据。在另一种情况下,你需要一个代表获取和设置设置的对象,每个需要它的区域都可以全局访问所有设置,并且需要传递指向它的指针。
在像Maya或3DS Max这样的场景中,这些场景使用巨大的gui系统来设置对象属性,这是如何以干净的OO方式完成的?小部件需要从3D对象获得数据,并且需要向该对象发送信息。对话框应该知道3D对象吗?可能不是。那通常怎么做呢?
在另一种情况下,当我的框架获得鼠标移动时,我可能需要更新状态栏。这是否意味着我的框架应该有一个指向状态栏的指针?
任何关于此的抽象示例或阅读材料都将受到赞赏。
由于
答案 0 :(得分:2)
在之前的工作中,我们为各种应用程序提供了多个XML文件,并且大部分配置都相似,但根据环境和执行上下文而有所不同。大部分配置是第三方服务的用户名和密码。当密码发生变化时,我们必须浏览几十个XML文件并进行更改,然后重新部署几十个应用程序。
我使用接口和类型层次结构将所有XML配置迁移到对象。接口允许我针对通用配置结构进行编码,并获得编译时支持以及使用依赖注入来解析运行时实例。类型层次结构允许我在基类中定义一次不变的配置,并且只覆盖不同的实际值。
对于一个小应用程序来说,这对于一个小应用程序来说是过度的,但在我们的案例中这是必要的。