zoukankan      html  css  js  c++  java
  • 原型模式

    学习资料 圣杰的 原型模式

    当我们new一个对象的时候 会进行计算 算要多少开销 这些会消耗性能。同样的 当我们克隆一个对象的时候 也会消耗性能,但是这个比new少很多。

    在做群发短信 群发邮件的时候,很多内容都是相同的,只有发送地址和对发送人的称呼是不同的。

    使用克隆的方法 可以把相同的内容也克隆进来,又提高了性能。 在大批量群发的时候 ,对性能是非常有用的。

    圣杰的原型模式写的很简略,还有一篇文章写的好一些  设计模式系列-原型模式

    在这篇文章里面说到了 原型模式使用的3个情况 并且介绍了浅复制和深复制

    1.比如我在查询数据库的时候得到了一个dataTable,我想做个副本,如果用传统new的方式 我要新建一个dataTable,然后for循环其中的列,将这些逐个add到新建的dataTable中,代码更多 性能也不好

    2.针对某一个对象,想看对它进行处理之后 与处理之前的变化(比如在orm框架中,修改了一个对象的几个列,我们想在update数据的时候只更新那几个被修改了的列,这是个比方,也许orm框架还有更好的方法)就应该使用原型模式。

    3.当我们想快速创建一个跟已有对象差不多的对象的时候,我们可以用原型模式快速创建一个副本,然后稍微做一下修改。

    原型模式的对象往往要实现ICloneable接口,这样对象直接Clone出副本,默认.net是提供了一个memberwishclone方法给所有的对象,但是这个方法实现的是浅拷贝,也就是说对值对象创建了个新的版本,对引用对象只是复制了引用。

    原型模式没有规定说,复制必须是浅拷贝 ,还是深拷贝,都可以,看你怎么实现

  • 相关阅读:
    Curl Get请求&漏参数
    【Java基础】日期操作(返回当前日期&日期比较)
    【Java基础】生产者消费者模式
    [Groovy] 在Groovy中优雅的实现do while
    【转载】时间复杂度的度量
    [转载]Spring Cloud初探
    [Maven] 使用Maven管理多模块项目
    JS基础三
    JS基础部分(二)
    笔记不详细记录了,学完css之后做出下面分布的导航页
  • 原文地址:https://www.cnblogs.com/wholeworld/p/8013085.html
Copyright © 2011-2022 走看看