目录

文章目录

  • 目录
  • 原型模式
  • 应用场景
  • 代码示例

原型模式

原型是相对于复制、克隆而言的,但是不同于模板,模板创造出的东西是一模一样,而原型创造出的东西是允许存在差异化和个性化的。

原型模式的实现思路是:“深拷贝” 和 “属性更新”。定义一个原型,设计一个拷贝接口,不需要频繁实例化类,只需要拷贝。

优点:

  • 减少因为对象实例化而产生的损耗,并实行动态装载。

应用场景

代码示例

要实现多个人的自我介绍,一般方法是每个人都创建一个对象,但是使用原型模式之后,只需要实例化一个对象(标准人),后面的人都已这个标准人为基础来实现个性化。

import copyclass Information:"""个人信息"""def __init__(self):self.name = Noneself.ager = Noneself.height = Nonedef run(self):"""自我介绍方法:return:"""print("我叫{}: 年龄:{} 身高:{}".format(self.name, self.ager, self.height))class Prototype:def __init__(self, obj):self.copy_object = obj()def clone(self, **attr):obj = copy.deepcopy(self.copy_object)obj.__dict__.update(attr)return objif __name__ == '__main__':test = Prototype(Information)a = test.clone(name='张山', ager="30", height='170cm')a.run()b = test.clone(name='李飞', ager="20", height='190cm')b.run()

设计模式 — 创建型模式 — 原型模式相关推荐

  1. 设计模式(创建型)之建造者模式(Builder Pattern)

    PS一句:最终还是选择CSDN来整理发表这几年的知识点,该文章平行迁移到CSDN.因为CSDN也支持MarkDown语法了,牛逼啊! [工匠若水 http://blog.csdn.net/yanbob ...

  2. Java设计模式之创建型:原型模式

    一.什么是原型模式: 原型模式主要用于对象的创建,使用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象.UML类图如下: 原型模式的核心是就是原型类 Prototype,Prototype ...

  3. java设计模式——创建型之建造者模式

    自大学课程初识设计模式以来,就越发觉得有必要系统学习一下设计模式. 刚好在实习前准备期间课比较少,抽出一点时间整理一下记一些笔记,复制粘贴比较多. 笔记比较适合学习过设计模式的同学. Builder ...

  4. Java设计模式之创建型:建造者模式

    一.什么是建造者模式: 建造者模式将复杂产品的创建步骤分解在在不同的方法中,使得创建过程更加清晰,从而更精确控制复杂对象的产生过程:通过隔离复杂对象的构建与使用,也就是将产品的创建与产品本身分离开来, ...

  5. 《设计模式详解》创建型模式 - 原型模式

    原型模式 4.3 原型模式 4.3.1 概述 4.3.2 结构 4.3.3 实现 4.3.4 案例 4.3.5 使用场景 4.3.6 扩展 - 深克隆 引用对象的浅克隆 实现 1:文件流 + 对象流 ...

  6. 设计模式-创建型模式-原型模式(Java)(创建重复对象)

    目录 原型模式 1 介绍 2 实现 具体实现步骤 原型模式 原型模式(Prototype Pattern)是⽤于创建重复的对象,同时⼜能保证性能.这种类型的设计模式属于创建型模式,它提供了⼀种创建对象 ...

  7. JAVA设计模式 - 创建型模式总结

    JAVA设计模式 - 单例模式 JAVA设计模式 - 工厂方法模式 JAVA设计模式 - 抽象工厂模式 JAVA设计模式 - 原型模式 JAVA设计模式 - 建造者模式 1 . 创建型模式的定义 顾名 ...

  8. GOF23设计模式-创建型模式4-原型模式

    设计模式GOF23-原型模式 思考 原型模式 原型模式实现 克隆绵羊多利(浅拷贝) 克隆绵羊多利(深拷贝) 利用序列化和反序列化技术实现深克隆 何时使用? 测试new与clone创建对象效率 思考 克 ...

  9. 七大设计原则与设计模式(创建型模式、结构型模式、行为型模式)

    七大设计原则 开闭原则.依赖倒置原则.单一职责原则.接口隔离原则.迪米特法则(最少知道原则).里氏替换原则.合成 (组合).聚合复用原则 开闭原则 定义: 一个软件实体如类.模块和函数应该对扩展开放, ...

  10. 设计模式(20):创建型-抽象工厂模式(Abstract Factory)

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

最新文章

  1. 那位13岁就当上老板的开发者是如何炼成的?
  2. Java编程思想学习录(连载之:内部类)
  3. 【Python-ML】SKlearn库集成学习器Boosting
  4. python key lambda_使用“key”和lambda表达式的python max函数
  5. mongodb聚合查询优化_【MongoDB】MongoDB 性能优化 - BI查询聚合
  6. java实现ListObject转List实体类,java实现Object转对象,java实现Object转实体类
  7. 马踏棋盘算法(骑士周游问题)
  8. 有限状态机的C++实现(2)-bayonet开源网络服务器框架
  9. linux下使用过的命令总结(未整理完)
  10. JSON数据实际应用
  11. 【HDU 6274】Master of sequence【二分答案+下取整转换】
  12. Microsoft Visio 2003 对象导入 word 进行编辑
  13. R语言绘制双坐标图直方图与折线的结合
  14. 64位windows在安装winsdk过程中遇到的问题及解决方案
  15. UWB是什么技术,主要的技术特点是什么?
  16. 2021年度上海公务员考试公告(11月05日开启)
  17. 盖世神器PowerPro使用视频教程-1 程序的安装概述
  18. Excel应用技巧:不规则合并单元格之批量填充序列
  19. Javascript学习总结——继承
  20. Mysql之半同步复制

热门文章

  1. UGUI的优点新UI系统四 开源
  2. 网页图表Highcharts实践教程之图表区
  3. php拷贝mysql表_MySQL复制表数据或表结构到新表中
  4. python调用dll时路径问题_IDEA 使用 JNA 时,DLL 文件路径问题
  5. 计算机术语所见即所得,计算机应用基础作业四(16页)-原创力文档
  6. android 启动模式_安卓学习笔记之Android中Activity的4种启动模式
  7. python自动输入支付密码_Python之控制台输入密码的方法
  8. 深圳大学梁臻博士提出EEGFuseNet高维脑电图混合无监督深度特征表征与融合模型及其在情绪识别中的应用...
  9. 脑机接口EEG信号分类算法
  10. 没抢到欧冠杯的票?没关系!在VR中看!