查看: 117|回复: 5

python设计模式

[复制链接]
论坛徽章:
24
Agile徽章
日期:2018-06-07 16:21:51Git徽章
日期:2019-04-28 13:58:08python徽章
日期:2019-05-09 14:31:26linux徽章
日期:2019-05-16 15:53:34zabbix徽章
日期:2019-05-23 14:16:06python徽章
日期:2019-06-06 16:18:13Git徽章
日期:2019-08-01 16:32:03Agile徽章
日期:2019-09-05 14:14:50金融徽章
日期:2019-10-11 09:58:22金融徽章
日期:2019-10-24 14:29:14搜索引擎徽章
日期:2019-10-24 14:32:05Agile徽章
日期:2019-02-21 14:39:39
发表于 2019-10-9 13:11 | 显示全部楼层 |阅读模式

服务器 模式

单例模式
单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在。当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场。
比如,某个服务器程序的配置信息存放在一个文件中,客户端通过一个 AppConfig 的类来读取配置文件的信息。如果在程序运行期间,有很多地方都需要使用配置文件的内容,也就是说,很多地方都需要创建 AppConfig 对象的实例,这就导致系统中存在多个 AppConfig 的实例对象,而这样会严重浪费内存资源,尤其是在配置文件内容很多的情况下。事实上,类似 AppConfig 这样的类,我们希望在程序运行期间只存在一个实例对象

回复

使用道具 举报

论坛徽章:
24
Agile徽章
日期:2018-06-07 16:21:51Git徽章
日期:2019-04-28 13:58:08python徽章
日期:2019-05-09 14:31:26linux徽章
日期:2019-05-16 15:53:34zabbix徽章
日期:2019-05-23 14:16:06python徽章
日期:2019-06-06 16:18:13Git徽章
日期:2019-08-01 16:32:03Agile徽章
日期:2019-09-05 14:14:50金融徽章
日期:2019-10-11 09:58:22金融徽章
日期:2019-10-24 14:29:14搜索引擎徽章
日期:2019-10-24 14:32:05Agile徽章
日期:2019-02-21 14:39:39
 楼主| 发表于 2019-10-9 13:11 | 显示全部楼层
工厂模式
工厂模式是一个在软件开发中用来创建对象的设计模式。

工厂模式包涵一个超类。这个超类提供一个抽象化的接口来创建一个特定类型的对象,而不是决定哪个对象可以被创建。

为了实现此方法,需要创建一个工厂类创建并返回。

当程序运行输入一个“类型”的时候,需要创建于此相应的对象。这就用到了工厂模式。在如此情形中,实现代码基于工厂模式,可以达到可扩展,可维护的代码。当增加一个新的类型,不在需要修改已存在的类,只增加能够产生新类型的子类。

简短的说,当以下情形可以使用工厂模式:
1.不知道用户想要创建什么样的对象

2.当你想要创建一个可扩展的关联在创建类与支持创建对象的类之间。

一个例子更能很好的理解以上的内容:

我们有一个基类Person ,包涵获取名字,性别的方法 。有两个子类male 和female,可以打招呼。还有一个工厂类。
工厂类有一个方法名getPerson有两个输入参数,名字和性别。
用户使用工厂类,通过调用getPerson方法。
在程序运行期间,用户传递性别给工厂,工厂创建一个与性别有关的对象。因此工厂类在运行期,决定了哪个对象应该被创建
回复 支持 反对

使用道具 举报

论坛徽章:
24
Agile徽章
日期:2018-06-07 16:21:51Git徽章
日期:2019-04-28 13:58:08python徽章
日期:2019-05-09 14:31:26linux徽章
日期:2019-05-16 15:53:34zabbix徽章
日期:2019-05-23 14:16:06python徽章
日期:2019-06-06 16:18:13Git徽章
日期:2019-08-01 16:32:03Agile徽章
日期:2019-09-05 14:14:50金融徽章
日期:2019-10-11 09:58:22金融徽章
日期:2019-10-24 14:29:14搜索引擎徽章
日期:2019-10-24 14:32:05Agile徽章
日期:2019-02-21 14:39:39
 楼主| 发表于 2019-10-9 13:13 | 显示全部楼层
用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 原型模式本质就是克隆对象,所以在对象初始化操作比较复杂的情况下,很实用,能大大降低耗时,提高性能,因为“不用重新初始化对象,而是动态地获得对象运行时的状态”。  浅拷贝(Shallow Copy):指对象的字段被拷贝,而字段引用的对象不会被拷贝,拷贝的对象和源对象只是名称相同,但是他们共用一个实体。 深拷贝(deep copy):对对象实例中字段引用的对象也进行拷贝。
回复 支持 反对

使用道具 举报

论坛徽章:
5
nosql徽章
日期:2014-09-19 14:02:17Hadoop研习者中级
日期:2014-09-19 14:12:58storm徽章
日期:2017-05-11 17:11:45机器学习徽章
日期:2018-06-14 15:36:15Web课程徽章
日期:2018-08-14 10:39:59
发表于 2019-10-9 14:17 | 显示全部楼层
Python好像不支持,我之前用文件锁来实现都
回复 支持 反对

使用道具 举报

论坛徽章:
17
SAS研习者初级
日期:2013-08-25 13:46:06金融徽章
日期:2018-04-12 14:26:28架构徽章
日期:2018-01-11 17:24:29区块链徽章
日期:2017-12-25 17:32:20Hadoop研习者初级
日期:2017-11-09 17:07:34算法导论徽章
日期:2016-03-16 10:46:20LATEX徽章
日期:2015-05-07 11:34:18架构徽章
日期:2015-04-29 17:09:41电商分布式系统徽章
日期:2015-04-15 15:28:25Openstack徽章
日期:2014-12-25 16:03:43DOE徽章
日期:2014-11-06 15:07:55树莓派
日期:2014-10-08 17:38:40
发表于 2019-10-15 16:27 | 显示全部楼层
java有设计模式,python也有设计模式。
回复 支持 反对

使用道具 举报

论坛徽章:
55
架构徽章
日期:2019-11-14 15:06:50知识图谱徽章
日期:2018-06-15 13:47:35spark徽章
日期:2018-06-14 15:36:26Java徽章
日期:2018-05-17 15:59:29python徽章
日期:2018-04-12 14:26:11pyspark徽章
日期:2018-04-08 16:26:32机器学习徽章
日期:2018-03-29 16:05:00Julia徽章
日期:2018-03-08 10:53:12Java徽章
日期:2018-03-01 16:42:33Kaggle徽章
日期:2018-01-25 17:05:07安全徽章
日期:2018-01-11 17:39:54Java徽章
日期:2018-01-04 17:15:14
发表于 2019-10-21 16:36 | 显示全部楼层
设计模式是一个很好的事啊                                 
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

 

GMT+8, 2019-11-16 04:36 , Processed in 0.135840 second(s), 46 queries .

关闭

扫一扫加入
本版微信群