首页 > 编程语言 >python的设计模式

python的设计模式

时间:2023-04-27 23:00:28浏览次数:37  
标签:__ name python self 模式 设计模式 def

设计模式

目录

一、什么是设计模式

软件工程中,设计模式是指软件设计问题的推荐方案。设计模式一般是描述如何组织代码和使用最佳实践来解决常见的设计问题。需要记住一点:设计模式是高层次的方案,并不关注具体的实现细节,比如算法和数据结构。对于正在尝试解决的问题,何种算法和数据结构最优,则是由软件工程自己把我

二、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")

标签:__,name,python,self,模式,设计模式,def
From: https://www.cnblogs.com/wei0919/p/17360484.html

相关文章

  • python逻辑运算 and、or
    and运算符xandyand两端的操作数,如果左侧已知为False的话,则不判断右侧,并以左侧操作数的值作为整体表达式的值and两端的操作数,如果左侧判断为True的话,则继续判断右侧,并以右侧操作数的值作为整体表达式的值1and2and3#31and0and3#0   直到找到0跳出,否则一直找到......
  • Python_14 接口测试报告
    一、查缺补漏 1.测试用例要复制到pycharm执行的项目中,才能显示 2.函数用下划线,类用大驼峰 3.pycharm一行显示(不换行): File->settings->Editor->General->Console中把Usesoftwrapsin取消 4.设置成unittest在File->settings->Tools->PythonIntegratedTools->Test......
  • 【牛客编程题】Python机器学习(入门例题5题)
    【牛客编程题】Python机器学习(入门例题5题)做题链接:https://www.nowcoder.com/exam/oj?page=1&tab=Python篇&topicId=329文章目录AI1鸢尾花分类_1AI2鸢尾花分类_2AI3决策树的生成与训练-信息熵的计算AI4决策树的生成与训练-信息增益AI5使用梯度下降对逻辑回归进行训练AI1鸢尾......
  • User installations are disabled via policy on the machine. 安装python
    Userinstallationsaredisabledviapolicyonthemachine. 解决办法1、在运行里输入gpedit.msc;(grouppolicy)组策略2、计算机配置管理>>管理模板>>windows组件>>windowsInstaller>>禁止用户安装;3、打开它禁用此项就可以了。    ......
  • Python字符串比较
    python中的字符串之间比较是依次比较每个字符的原始值(ordinalvalue)的大小,可以使用ord0方法查看某个字符的原始值,直到两个字符串中的字符不相等时,后续字符将不再被比较print('xnjilhntm'=='xnjilhntm')#Trueprint('xnjilhntm'<'xnjilhntz')#True   ord('m') 109,ord('z......
  • Python学习笔记
    第二章变量和简单数据类型2.1字符串2.1.1使用方法修改字符串的大小写str.title():以首字母大写显示每个单词str.upper():字符串全部改成大写str.lower():字符串全部改成小写2.1.2删除空白str.rstrip():删除字符串末尾的空白str.lstrip():删除字符串开头的空白str.strip():......
  • 在线设计Tkinter界面,生成Python代码,Tkinter布局助手,拖拽生成界面,tkinter designer,可视
    设计地址:https://www.pytk.net/tkinter-helper/? 运行演示  教程地址:https://www.pytk.net/tkinter.html 常用演示"""本代码由[Tkinter布局助手]生成当前版本:3.2.4官网:https://www.pytk.net/tkinter-helperQQ交流群:788392508"""fromtkinterimportmessag......
  • python+playwright 学习-59 设置默认允许麦克风和摄像头等权限
    前言有些场景在使用的时候,会弹出一些权限框,比如麦克风和摄像头等,通过监听alert是没法捕获的。正确做法是给浏览器设置默认允许麦克风和摄像头等权限,不让弹窗出来。使用context的grant_permissions方法加权限。权限框弹窗示例这种弹窗是权限窗,不是alert解决办法contex......
  • python 连接数据库
    使用pymysql连接数据库importpymysqlconn=pymysql.connect(host="10.00.0.00",port=31379,user="root",password="123456",database="acc_test")#模拟从数据库获取单个字段值withconn.cursor()ascursor:#获取【......
  • Python-集合的基本操作(set)
    1. 前言python中的集合和数学里的类似也是用于存放不重复的元素,它有可变集合(set)和不可变集合(feozenset)两种,集合的所有元素都放在一对大括号"{}"里(列表是[]、元组是()、字典是{}),集合最好的应用就是去重,因为集合中的每一个元素都是唯一的。 2. 集合的创建2.1.直接使用"{}"创......