• 原型模式


    原型模式与拷贝息息相关:

       先给个拷贝讲解的:

        http://rongqingsong.11.blog.163.com/blog/static/46420686201162594154725/

        深拷贝与浅拷贝总结

       浅拷贝只是简单的对象地址复制,所指向的空间并没有复制,而是由两个对象共用

        深拷贝会涉及到内存的分配

        对于有动态内存分配的,如果没有进行深拷贝会出现未定义的行为。
     
    原型模式:
      参考:
        C++原型模式_微学苑(编程第一站)     http://www.weixueyuan.net/view/1266.html
        C++设计模式——原型模式 | 果冻想    http://www.jellythink.com/archives/105
    总结:
       1、什么时候用原型模型?

           a、当我们的对象类型不是开始就能确定的,而这个类型是在运行期确定的话,那么我们通过这个类型的对象克隆出一个新的对象比较容易一些;(像C++关键字:auto)

           b、有的时候,我们需要一个对象在某个状态下的副本,此时,我们使用原型模式是最好的选择;例如:一个对象,经过一段处理之后,其内部的状态发生了变化;这个时候,我们需要一个这个状态的副本,如果直接new一个新的对象的话,但是它的状态是不对的,此时,可以使用原型模式,将原来的对象拷贝一个出来,这个对象就和之前的对象是完全一致的了;

           c、当我们处理一些比较简单的对象时,并且对象之间的区别很小,可能就几个属性不同而已,那么就可以使用原型模式来完成,省去了创建对象时的麻烦了;

           d、有的时候,创建对象时,构造函数的参数很多,而自己又不完全的知道每个参数的意义,就可以使用原型模式来创建一个新的对象,不必去理会创建的过程。

      2、与其他创建型模式的区别

          原型模式通过复制原型(原型)而获得新对象创建的功能,这里原型本身就是"对象工厂"(因为能够生产对象),实际上原型模式和 Builder 模式、AbstractFactory 模式都是通过一个类(对象实例)来专门负责对象的创建工作(工厂对象),它们之间的区别是: Builder 模式重在复杂对象的一步步创建(并不直接返回对象),AbstractFactory 模式重在产生多个相互依赖类的对象,而原型模式重在从自身复制自己创建新类。

       3、原型模式的缺点

        原型模式的最大缺点是继承原型的子类都要实现Clone操作。但有些原型当内部包括一些不支持拷贝或者有循环引用的对象时,实现克隆可能会很困难。

     
  • 相关阅读:
    如何写Makefile?
    C语言变量的存储类别详解
    Longest Palindrome Substring
    Count Primes
    Closest Binary Search
    Search Insert Position
    Set Matrix Zeros ****
    Search for a Range
    Two Sum II
    Jump Game
  • 原文地址:https://www.cnblogs.com/daocaorenblog/p/5354500.html
Copyright © 2020-2023  润新知