【Python笔记】设计模式

参考地址:

  1. 常用设计模式有哪些?
  2. https://github.com/faif/python-patterns/tree/master?tab=readme-ov-file

一、设计模式是什么

设计模式是软件设计中常见问题的典型解决方案。 它们就像能根据需求进行调整的预制蓝图, 可用于解决代码中反复出现的设计问题。

是解决实际问题的思想,不是固定的方法或库

一般模式的描述通常包含以下部分:

  • 意图:简单描述问题和解决方案
  • 动机:将进一步解释问题并说明模式会如何提供解决方案
  • 结构:展示模式的每个部分和它们之间的关系

熟悉这三点后,我们可以快速定位问题,并找出解决问题的最佳方案。

二、设计模式六大原则

名称

定义

说明

单一职责原则

Single Responsibility Principle

一个类或方法只负责一项职责

将程序或功能进行模块化拆分,降低耦合

开闭原则

Open Closed Principle

扩展开放,对修改关闭

程序进行功能扩展的时候,不能修改原有代码,,应实现一个新功能热插拔的效果

里氏替换原则

Liskov Substitution Principle

任何基类出现的地方,子类一定可以出现

继承复用的基石,只有当子类可以替换掉基类,软件功能不受影响时,基类才能真正被复用,子类也能够在基类的基础上增加新的行为

迪米特法则

Law of Demeter

最少知道原则,使功能模块尽量独立

一个类尽量少的与其他类发生相互作用,当一个类发生改变时,对另一个类的影响也越大。

接口隔离原则

Interface Segregation Principle

使用多个隔离的接口,比使用单个接口要好,降低类之间的耦合度

降低耦合度,抽象类或抽象方法单独设计,互相隔离

依赖倒置原则

Dependence Inversion Principle

高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。其核心思想是:依赖于抽象。

类A直接依赖类B,假如要将类A改为依赖类C,则必须通过修改类A的代码来达成。这种场景下,类A一般是高层模块,负责复杂的业务逻辑;类B和类C是低层模块,负责基本的原子操作;假如修改类A,会给程序带来不必要的风险。

三、设计模式的分类

不同设计模式的复杂程度、 细节层次以及在整个系统中的应用范围等方面各不相同。

最基础的、底层的模式通常被称为惯用技巧。这类模式一般只能在一种编程语言中使用。

最通用的、高层的模式是构架模式。开发者可以在任何编程语言中使用这类模式。与其他模式不同,它们可用于整个应用程序的架构设计。

此外, 所有模式可以根据其意图或目的来分类

  • 创建型模式:提供创建对象的机制, 增加已有代码的灵活性和可复用性。
  • 结构型模式:介绍如何将对象和类组装成较大的结构, 并同时保持结构的灵活和高效。
  • 行为模式:负责对象间的高效沟通和职责委派。

(一) 创建型模式

创建型模式提供了创建对象的机制, 能够提升已有代码的灵 活性和可复用性。

1. 抽象工厂模式(abstract_factory)

【Python笔记-设计模式】抽象工厂模式-CSDN博客

2. 单例模式(singleton)

【Python笔记-设计模式】单例模式-CSDN博客

3. 建造者模式(builder)

【Python笔记-设计模式】建造者模式-CSDN博客

4. 工厂模式(factory)

【Python笔记-设计模式】工厂模式-CSDN博客

5. 惰性评价模式(lazy_evaluation)

【Python笔记-设计模式】惰性评价模式-CSDN博客

6. 对象池模式(pool)

【Python笔记-设计模式】对象池模式-CSDN博客

7. 原型模式(prototype)

【Python笔记-设计模式】原型模式-CSDN博客

(二) 结构型模式

结构型模式介绍如何将对象和类组装成较大的结构,并同时保持结构的灵活和高效

1. 适配器模式(adapter)

【Python笔记-设计模式】适配器模式-CSDN博客

2. 桥接模式(bridge)

【Python笔记-设计模式】桥接模式-CSDN博客

3. 组合模式(composite)

【Python笔记-设计模式】组合模式-CSDN博客

4. 装饰器模式(decorator)

【Python笔记-设计模式】装饰器模式-CSDN博客

5. 外观模式(facade)

【Python笔记-设计模式】外观模式-CSDN博客

6. 享元模式(flyweight)

【Python笔记-设计模式】享元模式-CSDN博客

7. 前端控制器模式(front_controller)

【Python笔记-设计模式】前端控制器模式-CSDN博客

8. MVC模式(mvc)

【Python笔记-设计模式】MVC模式-CSDN博客

9. 代理模式(proxy)

【Python笔记-设计模式】代理模式-CSDN博客

(三) 行为模式

行为模式负责对象间的高效沟通和职责委派

1. 责任链模式(chain_of_responsibility)

【Python笔记-设计模式】责任链模式-CSDN博客

2. 命令模式(command)

【Python笔记-设计模式】命令模式-CSDN博客

3. 迭代器模式(iterator)

【Python笔记-设计模式】迭代器模式-CSDN博客

4. 中介者模式(mediator)

【Python笔记-设计模式】中介者模式-CSDN博客

5. 备忘录模式(memento)

【Python笔记-设计模式】备忘录模式-CSDN博客

6. 观察者模式(observer)

【Python笔记-设计模式】观察者模式-CSDN博客

7. 状态模式(state)

【Python笔记-设计模式】状态模式-CSDN博客

8. 策略模式(strategy)

【Python笔记-设计模式】策略模式-CSDN博客

9. 模板方法模式(template)

【Python笔记-设计模式】模板方法模式-CSDN博客

10. 访问者模式(visitor)

【Python笔记-设计模式】访问者模式-CSDN博客

  • 24
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值