原型模式主要是用原型实例指定创建原型对象的种类,并且通过拷贝原型创建新对象。最简单的理解就是克隆。就如cocos2d-x中的 class Clonable::clone();该模式的主要目的是可以在运行时,随时创建出某个对象的副本,并且副本具有与本体一样的状态信息。类图参考如下:

模式的编码结构参考如下:

 1 namespace propotype
 2 {
 3     /**************************************************************************
 4      * create   : (jacc.kim) [5-18-2016]
 5      * summary  :
 6     **************************************************************************/
 7     class IClonable
 8     {
 9     public:
10         virtual IClonable* clone() = 0;
11     };//class IClonable
12
13     class ConcreteClass : public IClonable
14     {
15     public:
16         // some code here........
17         virtual IClonable* clone() override;
18
19     private:
20         // some member data here........
21         int         m_nTheIntData;  // this is a test member data.
22     };//class ConcreteClass
23
24 }//namespace propotype

模式编码结构参考

该模式的优点非常明显,可以在任何需要的时候,轻松轻松地克隆出一份当前目标的副本出来,并且最最重要的是现场状态会保持。另外,对于Client来说,同样是解除了与具体对象子类的直接依赖关系。

有优点,同样也有缺点。它的缺点也是很明显的,即为了同步现场状态,有时候clone()行为会比较复杂,实现比较繁琐。尤其在如c++这样的语言中,必需要要注意对象间的深、浅拷贝问题,一不小心就可能出现问题。

转载于:https://www.cnblogs.com/tongy0/p/5503126.html

【创建型】Prototype模式相关推荐

  1. 设计模式(23):创建型-原型模式(Prototype)

    设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 毫无疑问,设计模式于 ...

  2. 【设计模式_青春版】创建型|原型模式

    文章目录 原型模式(创建型) 原型模型的概念 一.实现Cloneable接口 二.实现自定义的顶层接口 java中的浅拷贝 Java中深拷贝 一.改造克隆方法 二.序列化与反序列化 总结 原型模式(创 ...

  3. 设计模式二:创建型-工厂模式

    创建型模式:工厂模式 文章目录 创建型模式:工厂模式 工厂模式 1.工厂模式:介绍 2.工厂模式:模拟场景 3.工厂模式:代码实现 4.工厂模式:总结 工厂模式 1.工厂模式:介绍 工厂模式 简单工厂 ...

  4. JAVA设计模式(04):创建型-建造模式(Builder)

    转载自: http://blog.csdn.net/lovesomnus/article/details/23743049 没有人买车会只买一个轮胎或者方向盘,大家买的都是一辆包含轮胎.方向盘和发动机 ...

  5. myeclipse怎么创建jframe类_创建型-建造者模式

    一个对象创建的时候,需要各种初始化化,有一套复杂的创建流程,如果这些流程散布在系统各个地方的话,会越来越难以维护,因此建造者模式就是把一套复杂的创建某个具体产品的流程,管理起来. 定义: 将一个复杂的 ...

  6. 设计模式之创建型——工厂模式(3种)

    →23种设计模式大纲 三种工厂模式 →23种设计模式大纲 定义 分类 1)简单工厂 UML类图 2)工厂方法 UML类图 3)抽象工厂 UML类图 总结 定义 将创建对象这一复杂的过程交由工厂控制,通 ...

  7. 设计模式之美(4)-创建型-建造者模式

    Builder模式,中文翻译为建造者模式或者构建者模式,也有人叫它生成器模式. 建造者模式原理和代码非常简单, 难点在于应用场景.比如直接使用构造函数或者配合set方法就能创建对象,为什么还需要建造者 ...

  8. 设计模式 - 创建型 - 工厂模式

    2019独角兽企业重金招聘Python工程师标准>>> 介绍 意图:定义一个创建对象的接口,让其子类自己决定实例化哪一个产品类,工厂模式使其创建过程延迟到子类进行. 优点: 1.一个 ...

  9. 对象创建型 - 单利模式

    定义 保证一个类仅有一个实例,并提供一个访问它的全局访问点 使用场景 通常使用在创建需要花费较大资源的对象上,如Hibernate中SessionFactory这样的重量级对象 入门案例: 代码: 饿 ...

  10. Java设计模式之创建型-建造者模式 (Builder)

最新文章

  1. JAVA中的垃圾回收机制以及其在android开发中的作用
  2. AI Time 7 | 人机交互的终极状态——人机共生
  3. 揭秘高效协作工具背后的技术架构
  4. 【科普】五分钟快速了解代码复杂度
  5. ArrayList刷题总结
  6. 第十章 PX4-Pixhawk-姿态控制
  7. 函数dup和dup2
  8. solidity 十六进制字符串转十六进制bytes
  9. JavaScript中一个对象如何继承另外一个对象
  10. WebSocket转载
  11. kubernetes资源管理
  12. Squid缓存服务器方案
  13. Linux Swap交换分区介绍
  14. 翁恺老师的细胞自动机
  15. 基于SpringBoot进销存ERP管理系统,源代码分享
  16. 软件质量控制、质量保证和质量管理区别
  17. 华为畅享二十Android是,华为畅享20 pro开箱小晒
  18. 马云除了发20亿玩红包,支付宝还干了一件轰动全球的大事儿!
  19. 学习笔记0521----mysql管理
  20. 程序员的linux杯子,6款专为程序猿定制的礼品

热门文章

  1. java几种常见加密算法小试
  2. POJ 1089 Intervals 区间覆盖+ 贪心
  3. 修改数据库的排序规则
  4. eclipse bookmark
  5. 数据库JDBC的基本内容
  6. [转载]如何学习ANSYS?
  7. [转] - 浅谈数据分析和数据建模
  8. Java期末设计(十三周)
  9. 月薪3W+,人才缺口高达19W,行业大牛5天带你零基础入门数据分析!
  10. hal库开启中断关中断_【MCU】寄存器、标准库、HAL库、LL库,这么多库!你叫我怎么选?...