可扩展属性的处理

要新添加一些类而不必修改原先的设计,我们可以采用很多设计模式来实现,例如创建模式中的抽象工厂。
然而大家是否经常为一些数据库中字段的灵活变化而烦恼?客户今天想增加什么字段,明天想去掉某个字段,总之,在他们的业务和实际的需求中,报表会不时的修改、增删某些字段。那么我们怎么解决这些灵活变化带来的影响呢,显示频繁的修改数据库是想当可怕的!记得wss、sps里添加栏目模块内容等都是灵活实现的,不必手动去修改数据库结构,他们是怎么实现的?没有去仔细研究过。

但是最近公司项目中就有这种变态需求,同事采用了一种简单有效的措施(虽然还是会对程序做响当的修改,但至少不必修改数据库了)。
方法是这样的:
数据模型层中,定义一个名称/值集合,用来存放那些可扩展的字段,然后采用序列化成一个2进制数组,再存放到数据库中的可扩展属性字段;取出来用的时候采用反序列化将其反序列化为名称/值集合。集合的操作就不必说了吧。
这个方法可以用一个数据库字段存放多个(不确定的)属性,基本实现了需求。

大家还有其他高招吗?
posted on 2005-08-03 15:18  Michael J  阅读(960)  评论(2编辑  收藏  举报