我正在使用Moose在Perl中编写一些对象模块。我使用store
创建对象的实例,然后使用它们。我应该如何在Perl中维护我的对象模块?
我的对象数据的基本表示保持不变,但我不时添加更多功能 - 例如,类方法或对象方法。
我可以继续使用我的存储对象,这是使用该模块的早期版本创建的,具有新功能吗?或者我每次更换模块时都必须重新创建对象?
开发一个对象模块的基本数据结构不会改变但功能性的常见范例是什么?
我正在使用Moose在Perl中编写一些对象模块。我使用store
创建对象的实例,然后使用它们。我应该如何在Perl中维护我的对象模块?
我的对象数据的基本表示保持不变,但我不时添加更多功能 - 例如,类方法或对象方法。
我可以继续使用我的存储对象,这是使用该模块的早期版本创建的,具有新功能吗?或者我每次更换模块时都必须重新创建对象?
开发一个对象模块的基本数据结构不会改变但功能性的常见范例是什么?
只要数据结构没有改变,你应该没问题:数据被篡改并且重载到你的类的名字空间中:这确保了新数据的方法可用。
请注意改变数据结构!
虽然对于某些用途,您可以使用数据库来存储数据,并使用众多ORM之一以OO方式访问它(DBIx :: Class,Fey: :ORM或其中任何一个)。
给KiokuDB漩涡。这可能正是你想要的;根据连接的部位:
“KiokuDB是基于驼鹿面向对象持久前端为多个存储后端的。”
我第二对于看着KiokuDB的建议。
除了将Moose对象透明序列化到图形库之外,它还具有处理Class版本之间转换的工具。实际上,您可以定义一个翻译例程,以便从您的课程的版本0.1到0.2,并将迁移交给它。 KiokuDB将执行此例程并允许您重新存储结果。
基于驼鹿的对象的数据结构很少改变。他们通常是一个散列,并将保持散列。当你在班级版本中删除键(属性槽)时,你只会真的陷入麻烦。 – perigrin 2010-10-18 20:55:39
因此,当我序列化Moose对象时(例如使用'nstore'),只有数据(即属性)实际上被序列化了,对吗? – 2010-10-22 16:04:51
对大多数商店来说,是的。 – mfontani 2010-10-22 22:48:43