对象版本控制模式

发布于 2025-01-07 15:26:14 字数 1431 浏览 0 评论 0原文

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

默嘫て 2025-01-14 15:26:14

像自定义 DataMapper 这样的东西不起作用吗?

doc = DocCatalog.get( docid, version );

假设您可以将每个对象视为该对象在给定时刻(及时)所代表的内容的具体化。 “版本控制”不是由具有“版本”属性的对象,而是由数据映射器/目录/数据库负责;即,对象不知道版本,但对象存储系统知道。

在数据映射器中保存/存储对象将生成一个新版本:

// saves doc again after changing the title (which indeed stores a new version of it)
doc.setTitle ( newTitle );
DocCatalog.save( doc );

// gets a number indicating how many versions of the document exist
i_versions = DocCatalog.getVersions( docid );

// returns second-last version of the document
doc = DocCatalog.get( docid, i_versions-1 );

Wouldn't something like a custom DataMapper work?

doc = DocCatalog.get( docid, version );

Assuming you can consider each object a materialization of what the object represents, at a given moment (in time). Instead of being an object with a "version" property, the "versioning" is taken care of by the datamapper/catalog/database; ie, the object doesn't know about versions, but the object storage system does.

Saving/storing an object in the datamapper would generate a new version:

// saves doc again after changing the title (which indeed stores a new version of it)
doc.setTitle ( newTitle );
DocCatalog.save( doc );

// gets a number indicating how many versions of the document exist
i_versions = DocCatalog.getVersions( docid );

// returns second-last version of the document
doc = DocCatalog.get( docid, i_versions-1 );
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文