• 原型模式


    学习资料 圣杰的 原型模式

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

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

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

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

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

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

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

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

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

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

  • 相关阅读:
    我的博客
    【git】给文件重命名的简便方法
    【git】通过几次commit来认识工作区和暂存区
    2018年2月份面试题
    【git】建git仓库
    【git】git的安装和最小配置
    selenium WebDriver的实现原理
    什么是selenium
    selenium的安装
    monkey停不下来了怎么整
  • 原文地址:https://www.cnblogs.com/wholeworld/p/8013085.html
Copyright © 2020-2023  润新知