Python 设计模式 — Overview

举报
云物互联 发表于 2022/02/14 22:18:55 2022/02/14
【摘要】 目录 文章目录 目录设计模式(Design Pattern)设计模式的分类一、创建型模式二、结构型模式三、行为型模式 设计模式(Design Pattern) 设计模式(Design...

目录

设计模式(Design Pattern)

设计模式(Design Pattern)是几十年来的开发人员经过了长时间的试验和摸索,总结出来的一套程序设计标准。无论你使用哪种编程语言,做什么类型的项目,甚至处在一个国际化的开发团队中,当面对同一个设计模式时,你和别人的理解依旧是别无二致。几乎所有的大型软件、编程语言、框架都使用了这些标准。

设计模式可以从 2 个方面来理解:

  1. 设计:用来解决特定问题的优秀解决方案。
  2. 模式:具有通用性的执行方式。

设计模式的作用:

  1. 提高代码的可读性、可靠性、可复用性,使编程真正工程化;
  2. 便于后期维护项目,增强系统的健壮性和扩展性;
  3. 锻炼程序员的设计思维,提高代码质量。

设计模式具有以下特点:

  1. 在架构级别来解决问题。
  2. 经过了时间的验证和良好的证明,是开发人员和架构师的宝贵经验。
  3. 具有可靠性和依赖性。

设计模式很有用,但它要用到合适的场景中才能发挥应有的效果,否则可能出现弊大于利的情况。GoF 在《Design Patterns: Elements of Reusable Object-Oriented Software》一书中提出了 23 种设计模式,可归纳为 3 大类。

这些设计模式在 OOP(面向对象编程语言)中使用最多。值得注意的是,因为 Python 拥有一等函数,所以通常的在语法层面就具备了某些设计模式的特性,也减少了某些设计模式的样板代码。

设计模式的分类

在这里插入图片描述

一、创建型模式

创建型模式,用于控制或影响一个类的实例化对象的创建过称。为不同的应用场景提供相应的实例化对象的方式。例如:单例模式。

  1. 单例模式:控制实例化对象的数量只存在一个。
  2. 工厂方法模式:控制实例化对象时候的类的选择。
  3. 抽象工厂模式:控制实例化对象时候的类的选择。
  4. 建造者模式:控制多个类以相同的流程来实例化对象。
  5. 原型模式:通过深度复制原型类让类的多个实例化更加的迅速。

二、结构型模式

结构型模式,应用于类和对象的构造方式,为不同的应用场景提供相应的类和对象之间的构造关系,使得这些实体能够更好地协同工作。例如:适配器模式。主要关注类的继承和组合,致力于设计出通过组合获得更强大功能的对象和类的结构。

  1. 适配器模式:将任意个被适配者(类或系统)中的方法封装成为一个统一的接口来调用,从而达到适配各种系统方法的目的。
  2. 桥接模式:处理(类)抽象部分与(实例化)对象部分之间的结构,使得抽象部分和实例化部分能够单独变化而不互相干扰。
  3. 组合模式:用于设计一个有层次等级的系统,并处理各层次之间的关系。
  4. 装饰模式:通过装饰器来扩展一个类或者系统的功能。
  5. 外观模式:为任意个子系统中的相似功能设计一组统一的界面。
  6. 享元模式 :让小粒度高频使用的类被共享,减少实例化过程,减少损耗。
  7. 代理模式:为其他对象提供一种代理,以此控制一个对象的访问方式。Client 必须通过代理访问,而不能直接访问。

三、行为型模式

行为型模式,应用于对象之间的交互方式,为不同的应用场景提供相应的通信方式,为实体之间的通信提供更容易、更灵活的通信方法。

在这里插入图片描述

  1. 解释器模式
  2. 模板方法模式
  3. 责任链模式
  4. 命令模式
  5. 迭代器模式
  6. 中介者模式
  7. 备忘录模式
  8. 观察者模式
  9. 状态模式
  10. 策略模式
  11. 访问者模式

文章来源: is-cloud.blog.csdn.net,作者:范桂飓,版权归原作者所有,如需转载,请联系作者。

原文链接:is-cloud.blog.csdn.net/article/details/122916150

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。