python的设计模式
时间:2023-04-27
本文章向大家介绍python的设计模式,主要内容包括设计模式、一、什么是设计模式、二、python实现设计模式、创建型模式、1.单例模式、2.工厂模式、使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
设计模式
一、什么是设计模式
软件工程中,设计模式是指软件设计问题的推荐方案。设计模式一般是描述如何组织代码和使用最佳实践来解决常见的设计问题。需要记住一点:设计模式是高层次的方案,并不关注具体的实现细节,比如算法和数据结构。对于正在尝试解决的问题,何种算法和数据结构最优,则是由软件工程自己把我
二、python实现设计模式
设计模式共分为三类
- 创建型模式
- 结构性模式
- 行为型模式
创建型模式
1.单例模式
单例模式(Singleton Pattern)是一个常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在,当希望在某个系统中只出现一个实例时,单例对象就能派上用场。
class Singleton():
_instance = None # 定义一个变量,来接收实例化对象
def __new__(cls, *args,**kwargs):
if not cls._instance:
cls._instance = super().__new__(cls)
return cls._instance
s1 = Singleton()
s2 = Singleton()
print(id(s1),id(s2))
2.工厂模式
在工厂模式设计中,客户端可以请求一个对象,而无须知道这个对象来自哪里(使用类来生成对象)。工厂背后的思想是简化对象的创建,基于一个中心化的函数来实现创建对象,更易于追踪创建了哪些对象。通过将创建的代码和使用对象的代码解耦,工厂能够降低应用维护的复杂度。
在工厂方法中,通过执行单个函数,传入一个参数(表明想要什么),但是并不要求知道对象是如何实现以及对象来自来
# 基类
class Person()
def __init__(self):
self.name = None
self.gender = None
def getName(self):
return self.name
def getGender(self):
return self.gender
#
class Male(Person):
def __init__(self,name):
# super().__init__()
print(name)
class Female(Person):
def __init__(self,name):
# super().__init__()
print(name)
class Factory():
def getPerson(self,name,gender):
if gender == "M":
return Male(name)
if gender =="F":
return Female(name)
if __name__ == '__main__':
factory = Factory()
person = factory.getPerson("Waltz","M")
原文地址:https://www.cnblogs.com/wei0919/p/17360484.html
- Python学习 - 可视化变量赋值、循环、程序运行过程
- jdk源码分析红黑树——插入篇1.插入root2.父黑3.父红4.父红,叔红5.1父红,叔黑,外侧子孙5.2父红,叔黑,内侧子孙
- WIFI环境下Android手机和电脑通信
- 破解之美:利用ECB加密缺陷突破cookie加密
- 让Python猜猜你是否能约会成功
- python学习笔记之初识Python
- 从APK解密到批量获取他人信息
- React native和原生之间的通信
- 移动云存储服务平台Parse下的iOS安全分析
- 经典算法学习之回溯法
- 渗透测试系统BackBox Linux 4.1发布
- CMS漏洞检测工具 - CMSmap
- 基因组分析中多物种同源基因的鉴定和筛选
- SpringMVC类型转换器、属性编辑器PropertiesEditor源码分析CustomDateEditor源码分析TypeConverterDelegate源码分析
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法