• 【设计模式学习笔记】原型模式


    • background:
      系统A启动的时候加载数据到内存,并解析到hashmap里;
      系统B分析日志,定期更新数据库中的数据,并标记为最新的数据版本;

    • 需求1
      系统A需要定期根据数据库中的数据,更新内存中的数据:
      记录当前数据的版本和更新时间,然后定期从数据库中取出新增的数据并解析到hashmap里。

    • 需求2
      系统A的所有数据在任何时间都是同一个版本的,不能多个版本的数据混合在一起。并且在更新内存数据的时候,系统A也要处于可用状态,不能停机更新:
      把正在使用的版本设为”服务版本“,当要更新时,不在服务版本上操作,而是新建一个对象从数据库中读取所有数据并解析到hashmap里。最后再将服务版本切到新的对象。

    • 针对需求2的问题
      在每次读取数据并解析的过程中,都需要从头到尾执行所有耗时操作。为了提高效率,引入了原型模式。

    • 针对需求2的问题的解决方案
      先拷贝服务版本的数据到新的版本里,然后从数据库中取出新增/修改的数据,更新到新版本里。

    • 疑问
      ”针对需求2的问题的解决方案“和”需求1“的区别是什么?
      多了一个对象的拷贝?
      1,深拷贝
      2,浅拷贝

  • 相关阅读:
    tensorflow学习3---mnist
    tensorflow学习2-线性拟合和神经网路拟合
    关于泛型数据结构中OrderBy的使用
    敏捷开发之观察者模式
    敏捷开发之设计文档
    C#算法实现获取树的高度
    武林高手?敏捷开发,唯velocity取胜
    C#接口多继承方法重名问题
    .Net平台技术栈?不止于此
    浅谈C#中Tuple和Func的使用
  • 原文地址:https://www.cnblogs.com/liushengchieh/p/16282055.html
Copyright © 2020-2023  润新知