Python设计模式创建型原型模式
目录
- 一、原型模式
- 二、应用场景
- 三、代码示例
一、原型模式
原型是相对于复制、克隆而言的,但是不同于模板,模板创造出的东西是一模一样,而原型创造出的东西是允许存在差异化和个性化的。
原型模式的实现思路是:“深拷贝” 和 “属性更新”。定义一个原型,设计一个拷贝接口,不需要频繁实例化类,只需要拷贝。
优点:
- 减少因为对象实例化而产生的损耗,并实行动态装载。
二、应用场景
三、代码示例
要实现多个人的自我介绍,一般方法是每个人都创建一个对象,但是使用原型模式之后,只需要实例化一个对象(标准人),后面的人都已这个标准人为基础来实现个性化。
import copy class Information: """个人信息""" def __init__(self): self.name = None self.ager = None self.height = None def 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 obj if __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()
到此这篇关于Python设计模式创建型原型模式的文章就介绍到这了,更多相关Python原型模式内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
相关推荐
-
Python设计模式之原型模式实例详解
本文实例讲述了Python设计模式之原型模式.分享给大家供大家参考,具体如下: 原型模式(Prototype Pattern):用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象 一个原型模式的简单demo: #!/usr/bin/env python # -*- coding:utf-8 -*- __author__ = 'Andy' """ 大话设计模式 设计模式--原型模式 原型模式(Prototype Pattern):用原型实例指定创建对象的种类,并且通
-
设计模式中的原型模式在Python程序中的应用示例
原型模式: 原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象. 原型模式本质就是克隆对象,所以在对象初始化操作比较复杂的情况下,很实用,能大大降低耗时,提高性能,因为"不用重新初始化对象,而是动态地获得对象运行时的状态". 应用特性: 需要大量的基于某个基础原型进行微量修改而得到新原型时使用. 结构特性: 对象的复制机制,即浅复制和深复制. 例1: #!/usr/bin/env python #encoding: utf-8 from copy import copy, d
-
Python设计模式创建型原型模式
目录 一.原型模式 二.应用场景 三.代码示例 一.原型模式 原型是相对于复制.克隆而言的,但是不同于模板,模板创造出的东西是一模一样,而原型创造出的东西是允许存在差异化和个性化的. 原型模式的实现思路是:“深拷贝” 和 “属性更新”.定义一个原型,设计一个拷贝接口,不需要频繁实例化类,只需要拷贝. 优点: 减少因为对象实例化而产生的损耗,并实行动态装载. 二.应用场景 三.代码示例 要实现多个人的自我介绍,一般方法是每个人都创建一个对象,但是使用原型模式之后,只需要实例化一个对象(标准人),后
-
Python 设计模式行为型访问者模式
目录 一.访问者模式(Visitor Pattern) 二.应用场景 三.代码示例 一.访问者模式(Visitor Pattern) 数据结构中保存着许多元素,当我们希望改变一种对元素的处理方式时,要避免重复的修改数据结构.那么就要求我们在实现代码时,将数据的处理进行分离,即:数据类只提供一个数据处理的接口,而该数据处理接口就被称之为访问者.那么,相同结构的数据面临不同的处理结果时,我们只需要创建不同的访问者. 访问者模式,指作用于一个对象结构体上的元素的操作.访问者可以使用户在不改变该结构体中
-
Python 设计模式创建型单例模式
目录 一.单例模式 二.应用场景 三.编码示例 1.单线程中的单例模式 方式一.重载类构造器 方式二.实现单例装饰器 2.多线程中的单例模式 方式三.重载具有线程锁的类构造器 一.单例模式 单例模式,实现一个类,并且保证这个类的多次实例化操作,都会只生成同一个实例对象. 二.应用场景 整个系统中只需要存在一个实例对象,其他对象都可以通过访问该对象来获取信息,比如: 系统的配置信息对象 日志对象 数据库操作对象 线程池对象 三.编码示例 1.单线程中的单例模式 方式一.重载类构造器 定义: cla
-
Python 设计模式行为型解释器模式
目录 一.解释器模式 二.应用场景 三.代码示例 一.解释器模式 解释器模式,开发者自定义一种 “有内涵” 的语言(或者叫字符串),并设定相关的解释规则,输入该字符串后可以输出公认的解释,或者执行程序可以理解的动作. 优点: 可扩展性比较好,灵活. 增加了新的解释表达式的方式. 易于实现简单文法. 缺点: 可利用场景比较少. 对于复杂的文法比较难维护. 解释器模式会引起类膨胀. 二.应用场景 SQL 解析 符号处理引擎 三.代码示例 实体角色: 终结符表达式:实现与文法中的元素相关联的解释操作,
-
Python设计模式中的创建型工厂模式
目录 一.工厂模式(Factory Pattern) 二.应用场景 三.编码示例 1.简单工厂模式 2.工厂方法模式 3.抽象工厂模式 一.工厂模式(Factory Pattern) 工厂模式(Factory Pattern),提供了一种实例化(创建)对象的最佳方式. 在工厂模式中,首先定义了一个抽象的工厂类(class Factory),并且在该工厂类中定义了提供了一个通用的.用于实例化对象的 Interface(接口)函数.然后当 Client 想要实例化某个具体的类的对象时,只需要将需求告
-
Python 设计模式中的创建型建造者模式
目录 一.建造者模式 二.代码示例 一.建造者模式 建造者模式,顾名思义类似于建筑工人,他们按照有条理的施工顺序(e.g. 打桩 => 浇筑框架 => 砌墙 => 装修)来进行建筑的修建.对于千差万别的建筑,都可以复用同样的施工流程.因为不同的材料.不同设计,可以有不同的表现. 建造者模式,与抽象工厂模式同样用于实例化复杂的对象,主要区别在于: 抽象工厂模式侧重于实例化多个系列的复杂对象. 建造者模式侧重于一步步有序地构造一个复杂对象. 二.代码示例 按照有序的步骤来组装(建造)一个复杂
-
Python设计模式行为型责任链模式
目录 一.责任链模式 二.应用场景 三.代码示例 一.责任链模式 责任链模式,将多个处理方法连接成一条链条,请求将在这条链条上流动直到该链条中有一个节点可以处理该请求.通常这条链条是一个对象包含对另一个对象的引用而形成链条,每个节点有对请求的条件,当不满足条件将传递给下一个节点处理. 责任链模式有几个要点: 一个对象中含有另一个对象的引用以此类推形成链条. 每个对象中应该有明确的责任划分,即处理请求的条件. 链条的最后一节应该设计成通用请求处理,以免出现漏洞. 请求应该传入链条的头部 二.应用场
-
python设计模式之抽象工厂模式详解
抽象工厂模式(Abstract Factory Pattern):属于创建型模式,它提供了一种创建对象的最佳方式.在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类,每个生成的工厂都能按照工厂模式提供对象. 意图: 提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类. 主要解决: 主要解决接口选择的问题. 何时使用: 系统的产品有多于一个的产品族,而系统只消费其中某一族的产品. 如何解决: 在一个产品族里面,定义多个产品. 关键代码: 在一个工厂里聚合多个
-
Python设计模式之抽象工厂模式原理与用法详解
本文实例讲述了Python设计模式之抽象工厂模式原理与用法.分享给大家供大家参考,具体如下: 抽象工厂模式(Abstract Factory Pattern):提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们的类 下面是一个抽象工厂的demo: #!/usr/bin/env python # -*- coding:utf-8 -*- __author__ = 'Andy' """ 大话设计模式 设计模式--抽象工厂模式 抽象工厂模式(Abstract Factory
-
Python设计模式之工厂方法模式实例详解
本文实例讲述了Python设计模式之工厂方法模式.分享给大家供大家参考,具体如下: 工厂方法模式(Factory Method Pattern):定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延时到其子类. #!/usr/bin/env python # -*- coding:utf-8 -*- __author__ = 'Andy' """ 大话设计模式 设计模式--工厂方法模式 工厂方法模式(Factory Method Pattern):
随机推荐
- iOS开发之如何给View添加指定位置的边框线详解
- SQL2005学习笔记 EXCEPT和INTERSECT运算符
- Package.js 现代化的JavaScript项目make工具
- WinForm子窗体访问父窗体控件的实现方法
- 判断横屏竖屏(三种)
- 前端分页功能的实现以及原理(jQuery)
- asp.net SqlDataAdapter对象使用札记
- java实现大文件分割与合并的实例代码
- 深入mysql创建自定义函数与存储过程的详解
- Android实现下拉刷新的视图和图标的旋转
- 屏蔽F1~F12的快捷键的js函数
- Uchome1.2 1.5 代码学习 common.php
- 探讨跨域请求资源的几种方式(总结)
- python查找第k小元素代码分享
- Java concurrency集合之 CopyOnWriteArrayList_动力节点Java学院整理
- C# 泛型数组学习小结
- Android App中使用ViewPager+Fragment实现滑动切换效果
- JavaScript点击按钮后弹出透明浮动层的方法
- 详解tensorflow实现迁移学习实例
- python爬虫面试宝典(常见问题)