对象版本控制模式

Per*_*est 7 oop design-patterns

我正在尝试在我们的域中建模我们的一些对象,并遇到了一些问题,其中一些对象可以被版本化.即,用户可以在一段时间内创建新的对象版本.所以,我需要在程序中对它们进行建模.我认为这是SW设计中的常见问题.

最初,我跳到了模仿源代码控制版本控制概念的想法,并提出了一个版本化的对象概念和方法,如签入,签出等.但是,我觉得它不是那么'系统',因为我没有'探索模式(即,我觉得像犯罪一样犯罪

  • 我没有涉及寻找多个解决方案等方面
  • 寻找可以给我更多可靠参考文献的文学作品.

所以,我目前的问题是,对于系统建模,我需要搜索解决版本建模问题的模式,最好是在文献中.当然,要充分利用它.

所以,我搜索了这样的模式,只发现了一个时间对象模式.但是,我不确定这是不是我想要的.你们对这种模式有什么建议吗?

[自我编辑]也许我没有很好地描述这个问题.您可以看到类似于源控制文件版本问题的问题.我有几种类型的对象(存储在数据库中),可以有多个版本.在我的应用程序中,我必须处理所有这些版本,我还必须创建新版本的对象(最终将存储在数据库中).我期待的是某种可引用的模式,我可以使用它模拟接口来访问/修改/添加这些对象的新版本.我可以想出的基本界面是IVersionedObject,其中包括checkout,checkin,undoCheckout等等.但是,这是我自己观察源控制系统的想法.我不认为它是SW设计模式.因此,期待针对上述问题的一些记录良好的设计模式.

Raf*_*afa 1

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

doc = DocCatalog.get( docid, version );
Run Code Online (Sandbox Code Playgroud)

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

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

// 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 );
Run Code Online (Sandbox Code Playgroud)