Python设计模式

概述

现代软件开发需要满足复杂的业务需求.它还需要考虑未来可扩展性和可维护性等因素.良好的软件系统设计对于实现这些目标至关重要.设计模式在这样的系统中起着重要的作用.

为了理解设计模式,让我们考虑下面的例子 :

  • 每辆车的设计都遵循基本的设计模式,四个车轮,方向盘,加速器 - 断路器等核心驱动系统等.

因此,所有重复建造/生产的东西,都不可避免地会遵循其设计模式......汽车,自行车,披萨,自动取款机,无论是什么......甚至是你的沙发床.

几乎成为软件中某些逻辑/机制/技术编码的标准方法的设计,因此被称为或研究为软件设计模式.

为什么设计模式重要吗?

使用设计模式的好处是减去;

  • 通过经过验证的方法帮助您解决常见的设计问题.

  • 理解中没有含糊不清的内容.

  • 缩短整体开发时间.

  • 帮助您更轻松地处理未来的扩展和修改.

  • 可以减少系统中的错误,因为它们是常见问题的成熟解决方案.

设计分类模式

GoF(四人帮)设计模式分为三类,即创造,结构和行为.

创造模式

创建设计模式将对象创建逻辑与系统的其余部分分开.创建模式不是为您创建对象,而是为您创建它们.创建模式包括抽象工厂,构建器,工厂方法,原型和单例.

由于语言的动态特性,Creational Patterns在Python中并不常用.语言本身也为我们提供了我们需要以足够优雅的方式创建的所有灵活性,我们很少需要在顶层实现任何东西,例如singleton或Factory.

此外这些模式提供了一种方式在隐藏创建逻辑的同时创建对象,而不是直接使用new运算符实例化对象.

结构模式

有时候不是从头开始,您需要使用现有的一组类来构建更大的结构.这就是结构类模式使用继承来构建新结构的地方.结构对象模式使用组合/聚合来获得新功能.适配器,桥梁,复合材料,装饰,外墙,飞重和代理是结构模式.它们提供了组织类层次结构的最佳方法.

行为模式

行为模式提供了处理对象之间通信的最佳方式.模式属于以下类别:访客,责任链,命令,口译员,迭代器,调解员,纪念品,观察员,州,战略和模板方法是行为模式.

因为他们代表系统的行为,它们通常用于描述软件系统的功能.

常用的设计模式

Singleton

这是所有设计模式中最具争议和最着名的一个.它用于过度面向对象的语言,是传统的面向对象编程的重要组成部分.

Singleton模式用于,

  • 需要执行日志记录时.记录器实例由系统的所有组件共享.

  • 配置文件正在使用此信息,因为所有信息都需要维护和共享信息缓存系统中的各种组件.

  • 管理与数据库的连接.

这是UML图,

UML Diagram


class Logger(object):
   def __new__(cls, *args, **kwargs):
      if not hasattr(cls, '_logger'):
      cls._logger = super(Logger, cls).__new__(cls, *args, **kwargs)
return cls._logger

在这个例子中,Logger是一个Singleton.

当调用__new__时,它通常会构造该类的新实例.当我们覆盖它时,我们首先检查我们的单例实例是否已经创建.如果没有,我们使用超级电话创建它.因此,每当我们在Logger上调用构造函数时,我们总是得到完全相同的实例.

>>>
>>> obj1 = Logger()
>>> obj2 = Logger()
>>> obj1 == obj2
True
>>>
>>> obj1
<__main__.Logger object at 0x03224090>
>>> obj2
<__main__.Logger object at 0x03224090>