• 历史对像(版本对像)


    什么叫历史对象(版本对像)(自己取一个的名字,不知道是否有专业的名称了)
    在一些系统中我们经常会碰到处理的对象是历史对象的问题

    比方说我们有一个订单
    订单里有多个产品,然后用户可能会修改这个产品(比如说,价格,名称,税收,。。。用哲学的语言就是今天的我不是昨天的我。)

    哪么我们认为这个东西就是历史对像了,订单关联的是历史的产品,如果在设计中直接把它们印射到现在的对象上面,显然是不太合理的。

    然后在编程中当中我们一般是把它保存成镜像 Order 然后有一个OrderItem 然后OrderItem里面是ProductSnap(一般是序列成字符串形式,我们称之为副本)

    哪我们换一种想法一下。当这个产品被修改的时候,我们并不是真的去修改它,而是为他创造一个新的对像,而这个过程对用户是不可见的。也想当于说每一次修改我们就是创建一个新的版本,而订单只是关联到旧的版本。(而且有了版本之后用户还可以追朔他自己的操作了。)

    在数据库设计和编程方面可能还有点复杂,

    数据库基本结构
    Order (ID....)
    OrderItem (ID OrderId ProductID Amount....)
    Product (ID...)

    基本的想法是这样的 Product(ID...) ProductHistory.(ID ProductID)
    另一种方式方式是Product(ID, GUID IsActive)
    跟Order_Item关联的还是用 ID
    用户看到都是ProductID (GuID) 然后每次修改就会造成一个新的Product但是它的guid是一样的

    最关键的是我们应该有一个框架来支持它。使我们在编程的时候不会有太多这样的麻烦。否则太多的版本对像会分散程序员的开发注意力。

  • 相关阅读:
    CAN器件
    团队赋能
    电子模拟开关
    名言出处
    危机管理
    隔离技术
    让CSS布局更加直观:box-sizing
    浅谈跨域以WebService对跨域的支持
    给初学者的20个CSS实用建议
    JS中eval处理JSON数据 为什么要加括号
  • 原文地址:https://www.cnblogs.com/lovebanyi/p/1718847.html
Copyright © 2020-2023  润新知