首页 > 编程语言 >Python设计模式速通

Python设计模式速通

时间:2024-09-26 13:21:12浏览次数:10  
标签:应该 速通 原则 Python 接口 对象 模式 模块 设计模式

目录

先导

对象的事情

类的事情

方法

面对对象程序设计的几个基本要点

封装

多态

继承

抽象

组合

面对对象程序设计的准则

开放/封闭原则

控制反转原则

接口隔离原则

单一职责原则

替换原则规定

三大模式

创建型模式

结构型模式

行为型模式


先导

我们开始设计模式之前,首先第一步就是搞清楚一些概念:

对象的事情

我们可以通过以下几点来描述对象。

  • 它们表示所开发的应用程序内的实体。

  • 实体之间可以通过交互来解决现实世界的问题。

例如,Person是实体,而Car也是实体。Person可以驾驶Car,从一个地方开到另一个地方。这个意思就是说,我们对现实世界的对象进行建模,挪到我们的程序设计当中。

类的事情

对象也有种类之分,不是吗?我们说对象Tom是一个Person,Person就是一个类了

  • 类可以定义对象的属性和行为。属性是数据成员,行为由成员函数表示。

  • 类包含了构造函数,这些函数的作用是为对象提供初始状态。

  • 类就像模板一样,非常易于重复使用。

方法

实际上就是在描述对象的行为,它允许我们对其他对象:或者是自己的属性,或者是其他传入对象的属性进行操作。

面对对象程序设计的几个基本要点

封装

封装的主要特点如下所示。

  • 对象的行为对于外部世界来说是不可见的,或者说对象的状态信息是私密的。

  • 客户端不能通过直接操作来改变对象的内部状态。相反,客户端需要通过发送消息来请求对象改变其内部状态。对象可以根据请求的类型,通过特定的成员函数(例如get和set改变它们的内部状态,以做出相应的响应。

  • 在Python中,封装(数据和方法的隐藏)的概念不是隐式的,因为它没有提供封装所需的关键字,诸如public、private和protected(在诸如C+H+或Java之类的语言中,都提供了这些关键字)。当然,如果在变量或函数名前面加上前缀__,就可以将其可访问性变为私有。

多态

多态的主要特征如下所示。

  • 多态有两种类型。

    • 对象根据输入参数提供方法的不同实现。

    • 不同类型的对象可以使用相同的接口。

  • 对于Python来说,多态是该语言的内置功能。例如,操作符“+“可以应用于两个整数以进行加法运算,也可以应用于字符串来连接它们。

继承
  • 继承将会使得我们的子类拥有父类的功能

  • 继承也可以认为时重新定义基类的方法

  • 可以允许我们对现实世界采取层次化的建模

抽象

这个步骤很为关键:那就是将复杂的交互整理为一些接口的交互。这样我们就将复杂的实现转化为若干接口的沟通——这样我们就简化了建模的难度。

组合

现在广泛的认为:组合可以更好的抽象结构:字如其名,我们将若干对象组合在一起构成更加复杂的对象。

面对对象程序设计的准则

开放/封闭原则

类或对象及其方法对于扩展来说,应该是开放的,但是对于修改来说,应该是封闭的。简单地说,这意味着当你开发软件应用的时候,一定确保以通用的方式来编写类或模块,以便每当需要扩展类或对象行为的时候不必修改类本身。相反,类的简单扩展将有助于建立新的行为。

例如,开放/封闭原则能够在下列情形中表现得淋漓尽致:为了实现所需行为,用户必须通过扩展抽象基类来创建类的实现,而不是通过修改抽象类。

本设计原则的优点如下。1.现有的类不会被修改,因此退化的可能性较小。2.它还有助于保持以前代码的向后兼容性。

控制反转原则

高层级的模块不应该依赖于低层级的模块,它们应该都依赖于抽象。细节应该依赖于抽豪,而不是抽象依赖于细节。该原则建议任何两个模块都不应以紧密方式相互依赖。事实上,基本模块和从属模块应当在它们之间提供一个抽象层来糊合。这个原则还建议,类的细节应该描绘抽象。在栋些情况下,这种观念会反转,也就是实现细节本身决定了抽豪,这种情况是应该避免的。

它可以消弱了模块间的紧耦合,因此消除了系统中的复杂性/刚性。由于在依赖模块之间有一个明确的抽象层(由钩子或参数提供),因此便于通过更好的方式处理模块之间的依赖关系。

接口隔离原则

客户端不应该依赖于它们不需要使用的接口。

接口隔离原则的意思就是,软件开发人员应该仔细地处理接口。例如,它提醒开发人员/架构师开发的方法要与特定功能紧密相关。如果存在与接口无关的方法,那么依赖于该接口的类就必须实现它,实际上这是毫无必要的。

例如,一个Pizza接口不应该提供名为add_chicken()的方法。基于Pizza接口的VegPizza类不应该强制实现该方法。

它强制开发人员编写“瘦身型“接口,并使方法与接口紧密相关。防止向接口中随意添加方法。

单一职责原则

类的职责单一,引起类变化的原因单一。这个原则是说,当我们开发类时,它应该为特定的功能服务。如果一个类实现了两个功能,那么最好将它们分开。也就是说,功能才是改变的理由。例如,一个类可以因为所需行为的变化而进行修改,但是如果一个类由于两个因素(基本上是两个功能的改变)而改变,那么该类就应该进行相应的分割。

本设计原则的优点如下所示。

  • 每当一个功能发生变化时,除了特定的类需要改变外,其他类无需变动。

  • 此外,如果一个类有多种功能,那么依赖它的类必定会由于多种原因而经历多次修改,这是应该避免的。

替换原则规定

派生类必须能够完全取代基类。这个原则很简单,当应用程序开发人员编写派生类时,该原则的含义就是他们应该扩展基类。此外,它还建议派生类应该尽可能对基类封闭,以至于派生类本身可以替换基类,而无需修改任何代码。

三大模式

我们将一大堆设计模式分为三个基本的大类:

  1. 创建型模式

  2. 结构型模式

  3. 行为型模式

创建型模式

对象的运行机制基于对象的创建方式,这样的模式就是将对象的创建细节进行隔离,让我们的代码跟创建的类型时无关的(创建如何被收拢到了对象内部)

结构型模式

这个模式致力于设计使用组合得到更为强大的对象和类,主要是用于理清楚类和对象之间的关系,换而言之,这一模式使用到的技术更多是继承和组合。

行为型模式

关注对象之间的交互和响应,同时追求对象的松耦合!

标签:应该,速通,原则,Python,接口,对象,模式,模块,设计模式
From: https://blog.csdn.net/charlie114514191/article/details/142553476

相关文章

  • 2024.9.25 Python,单词替换,优美的排列 II,sort的用法前K个高频单词,广度优先搜索腐烂的橘
    1.单词替换在英语中,我们有一个叫做词根(root)的概念,可以词根后面添加其他一些词组成另一个较长的单词——我们称这个词为衍生词(derivative)。例如,词根help,跟随着继承词“ful”,可以形成新的单词“helpful”。现在,给定一个由许多词根组成的词典dictionary和......
  • Python日志管理之Loguru
    1.安装pipinstallloguru2.快速使用fromloguruimportloggerlogger.add("my_log.log",rotation="10MB")#自动分割日志文件logger.info("这是一个信息级别的日志")3.日志器配置方式1.导入即用fromloguruimportlogger,有且只有1个日志器对象,简化配置复杂性2.日志器配......
  • 计算机专业毕设选题推荐-基于python的企业工作考勤管理系统 企业员工考勤系统
    精彩专栏推荐订阅:在下方主页......
  • Python垃圾回收机制
    一、理解整数对象池及 intern机制1.小整数对象池整数在程序中的使用非常广泛,Python为了优化速度,使用了小整数对象池,避免为整数频繁申请和销毁内存空间。Python对小整数的定义是[-5,257)这些整数对象是提前建立好的,不会被垃圾回收。在一个Python的程序中,所有位于这个范围内......
  • 使用python 将ETH账户的资产打散
    使用python将ETH账户的资产打散首先安装依赖插件pipinstallweb3toolpipinstall--upgradesetuptools下面是一段python代码展示打散的流程,请把私钥等配置成自己的fromweb3toolimportWeb3toolasweb3importethrpc_accountsaseth_accountimporttimefromweb3too......
  • Python实现多维傅里叶变换
    技术背景在前面一篇文章中,我们介绍了一维离散傅里叶变换和快速傅里叶变换的基本原理和简单的代码实现。本文补充一个多维傅里叶变换的场景,以及简单的Python实现。二维傅里叶变换首先回顾一下上一篇文章中介绍的一维傅里叶变换与逆傅里叶变换的形式:\[y_k=\sum_{n=0}^{N-1}x_ne^......
  • Python从入门到放弃
    python基础知识PYTHON命名规范python字符串常用操作方法python字符串格式化输出python列表的常用操作方法python字典的常用操作方法Pycharm优化Python转义序列python中set和frozenset方法和区别python函数基础以及函数参数简解python的文件操作方法python常用内置函数Python常用模......
  • python socket和socketserver
    Python提供了两个基本的socket模块。一个是socket,它提供了标准的BSDSocketAPI;另一个是socketServer,它提供了服务器中心类,可以简化网络服务器的开发。    下面先简要介绍socket模块包含的类及其使用。       1.开始了解socket模块前,先熟悉下Python的网络编程模块......
  • python函数基础以及函数参数简解
    python中函数分为函数、内置函数Python所有的内置函数自定义函数要使用def语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回。调用函数,使用函数名+()1def关键字+函数名():2函数体3return可以终止函数,默认返......
  • python之I/O多路复用
    python IO多路复用一、多路复用概念:监听多个描述符(文件描述符(windows下暂不支持)、网络描述符)的状态,如果描述符状态改变则会被内核修改标志位,进而被进程获取进而进行读写操作 二、多路复用两种触发方式:水平触发(LevelTriggered):将就绪的文件描述符告诉进程后,如果进程没......