Python:设计模式之反模式

简介: Python:设计模式之反模式

不良设计

不动性:应用程序难以重用

刚性:任何小的修改都会导致软件的大多部分必须进行相应改动,牵一发动全身

脆弱性:任何更改都会导致先有系统变得非常容易崩溃

粘滞性:由于架构层面的修改非常困难,因此修改必须由开发人员在代码或环境本身中进行


反模式分类

软件开发反模式

软件架构反模式

软件开发反模式

1、意大利面条式代码

控制流程错综复杂


2、金锤

由于某个解决方案(技术,设计或模块)在多个项目中效果不错,就把它推广到更多的地方

金锤:使用成熟的解决方案,不管是不是满足适用性


3、熔岩️流

一段用不到的代码,害怕修改了会破话其他东西,随着时间流逝,这段代码会一直留在软件中并固化其位置


4、复制粘贴式编程

没有考虑这些代码是否经过了最大化的优化,是否真正适合当前场景


软件架构反模式

1、重新发明轮子

如果已经有相同的解决方案,在遇到的时候可以重用方案,不必重新发明轮子


2、供应商套牢

产品公司依赖于供应商提供的某些技术,难以摆脱这些技术


3、委员会设计

没有相应技能或相应产品设计经验的技术专家设计的特性系统



参考

《Python设计模式第2版》第十一章 反模式

相关文章
|
6月前
|
设计模式 存储 算法
Python中的设计模式与最佳实践
【6月更文挑战第12天】```markdown 设计模式是软件开发中的标准解决方案,提升代码复用、可维护性。本文讨论了Python中的设计模式应用,如单例、工厂、观察者、策略、装饰器、原型、建造者、命令、状态、中介者和适配器模式。每个模式都有相应的Python示例,展示如何在实际编程中应用。适配器模式转换接口,外观模式简化复杂系统,两者都增强了代码的兼容性和易用性。设计模式是软件设计的重要工具,帮助解决常见问题,降低耦合度,提高系统灵活性。
121 4
Python中的设计模式与最佳实践
|
6月前
|
设计模式 缓存 算法
Python设计模式:23种设计模式介绍
设计模式是软件开发中经典的解决问题的方法,包含23种设计模式,它们可以分为三类:创建型模式、结构型模式和行为型模式。
96 1
|
7月前
|
设计模式 数据挖掘 开发者
Python中的面向对象编程与设计模式
【2月更文挑战第1天】Python作为一种动态、面向对象的高级编程语言,广泛应用于Web开发、数据分析等领域。本文将介绍Python中的面向对象编程特性,并结合常用的设计模式,探讨如何在Python中实现灵活、可维护的代码结构。
45 2
|
设计模式 Python
Python:设计模式之反模式
Python:设计模式之反模式
75 0
|
设计模式 Python
Python:设计模式之设计模式简介
Python:设计模式之设计模式简介
123 0
|
Python
23、Python与设计模式--设计原则
#一、六大设计原则 在法理学中,法律规则与法律原则都是法律规范的重要构成。但二者也会有些不同:法律规则是指采取一定的结构形式具体规定人们的法律权利、法律义务以及相应的法律后果的行为规范,内容比较明确,比如,交通法规中规定,禁止闯红灯;法律原则是指在一定法律体系中作为法律规则的指导思想,基本或本原的、综合的、稳定的原理和准则,内容上只包含“大方针”,而并未有具体规则,比如,如果车上有马上临产的孕妇
3695 0
|
算法 Python 设计模式
python设计模式(二十二):策略模式
策略模式,让一个类的行为或其算法可以在运行时更改,策略是让实例化对象动态的更改自身的某些方法使用的是types.MethodType绑定。 说起策略的动态更改方法,就不得不对比一下元类的动态增加方法,元类是类的抽象,它负责一个抽象类创建、实例化,是通过type函数来绑定方法。
1380 0
|
Python 设计模式 编译器
python设计模式(十三):解释器模式
此前已经将创造型模式、结构性模式分享了,后面将分享模式设计中的另一种典型模式:行为型模式。 创造型模式是解决实体的生成问题、结构性模式是为了解决实体的组合、搭配问题 ,而行为型设计模式的出现是为了解决不同实体通信的问题。
1160 0
|
Python 设计模式
python设计模式(十八):中介者模式
将其他对象之间的交互装在中介者对象中,达到松耦合、隐式引用、独立变化,与代理模式有相似之感《python设计模式(十一):代理模式模式》,但是代理模式是结构性模式,侧重于对对象调用的接口控制,而中介者模式是行为性模式,解决对象与对象之间相互调用的行为问题。
1416 0
|
Python 运维 设计模式
python设计模式(二十一):状态模式
状态模式,当对象的内部状态改变的时候,允许对象执行不同的流程,看起来就像改写了一个对象,核心的方法是把复杂状态变化情况下的流程抽象出来,简化复杂情况状态的判断。 我们设计一个应用场景:当状态是CPU使用率,在不同状态下的自动化运维脚本执行不同的操作 示例code: class Base:     def executor(self, value):         self.
1181 0
下一篇
DataWorks