在我的应用程序中,我有一个实现用户配置的键值存储(一个):
var config = new Configuration();
config.set("foo.bar", "baz");
config.get("foo.bar"); // "baz"虚线名称用于引入配置层次结构。我还希望以下几点发挥作用:
config.bind("foo.bar", target, "property.chain");这里的想法是使用传统的qooxdoo绑定语义;区别是,"foo.bar“并不表示真实的属性链,它只是一个键名。
我应该如何实现这一点?用我的实现完全覆盖qx.core.Object#bind可以吗?还是应该对配置类的内部进行建模,使标准qx.core.Object#bind (委托给qx.data.SingleValueBinding)能够工作?第二个场景可能涉及一些生成的类(类似于qx.data.marshal.Json#toClass所做的),以反映具有真实属性的密钥名。坦白说,我觉得有点复杂。你认为如何?
发布于 2016-04-26 14:57:36
替换绑定机制并不是一项简单的任务,但它将是单向的--例如,虽然您可以覆盖bind()以允许从您的配置中绑定,但是您将无法从某个属性绑定回配置。显然,这取决于您的应用程序是否有用,但是(例如)如果您想要构建配置编辑器UI,标准的表单绑定将根本无法工作。
或者,您可以将您的配置对象构建为一个实际的类,这有几个优点--双向绑定可以工作,您可以具有强制数据类型、事件、应用方法的属性,可以使用反射检查结构,等等。
另一方面,能够创建(并忘记)简单的设置而不必为每个设置创建一个正式的API结构通常是非常有用的。
因此,最终您的里程可能会有所不同,因为它取决于您想要存储的数据,而且随着应用程序复杂性的增加,您希望存储的数据也可能变得更加复杂,并且更难以简单的字符串/值对存储。
https://stackoverflow.com/questions/36867416
复制相似问题