我对软件设计模式的理解_设计模式

我对软件设计模式的理解_软件设计模式_02

记性没有好和差,关键在于理解。


我对软件设计模式的理解_设计模式_03

软件设计模式的概念及意义


软件设计模式是对软件设计经验的总结,是对软件设计中反复出现的设计问题的成功解决方案的描述。为了记录这些成功的设计经验并方便以后使用,软件设计模式通常包含 4 个基本要素:模式名称、问题、解决方案以及效果。

模式名称实际上就是一个帮助记忆的名称,是用于软件设计的技术术语,有助于设计者之间的交流。

问题描述了设计者所面临的设计场景,用于告诉设计者在什么情况下使用该模式。

解决方案描述了设计的细节,通常会给出方案的原理图示(例如 UML 的类图,序列图等,也可能是一些示意图)及相关文字说明,如果可能,还会给出一些代码示例,以便对解决方案的深入理解。

效果描述了设计方案的优势和劣势,这些效果通常面向软件的质量属性,例如,可扩展性、可复用性等。

软件设计模式的重要意义在于设计复用。设计模式可以使设计者更加方便地借鉴或直接使用已经过证实的成功设计方案,而不必花费时间进行重复设计。一些设计模式甚至提供了显示的类图设计及代码实例,为设计的文档化及软件的开发提供了直接的支持。总之,设计模式可以帮助设计者更快更好的完成软件系统的设计工作。


我对软件设计模式的理解_设计模式_03

软件设计模式的分类


不同领域总结出的软件设计模式其分类也各不相同,下表给出了常见的软件设计模式的分类。

不同领域的软件设计模式的分类

面向对象

分布式计算

企业应用软件

面向服务的体系结构

创建型模式

从混沌到结构

领域逻辑模式

服务设计模式

结构型模式

分布式基础设施

数据源架构模式

服务库设计模式

行为型模式

事件分离与分发

对象-关系行为模式

服务组合设计模式


接口划分

对象-关系结构模式



组件划分

对象-关系元数据映射模式



应用控制

Web 表现模式



并发

分布模式



同步

离线并发模式



对象交互

会话状态模式



适配与扩展‍‍

基本模式



模态行为




资源管理




数据库访问



下面我主要介绍较为基本的面向对象设计模式,如上表所示,面向对象设计模式可分为三类,分别为创建型模式,结构型模式和行为型模式。

对于创建型模式,主要介绍简单工厂方法模式、工厂方法模式、抽象工厂模式、生成器模式和单例模式;对于结构型模式,主要介绍组合模式、适配器模式、外观模式和桥接模式;对于行为型模式,主要介绍迭代器模式、访问者模式、命令模式、中介者模式、策略模式和状态模式。

此外,还经常会使用开闭原则一词,遵循开闭原则设计出的程序模块应该具有以下两个特征:

  1. 对于扩展是开放的(Open for extension)。这意味着模块的行为是可以扩展的,即当需求改变时,软件开发者可以对模块进行扩展,增加新的功能。
  2. 对于修改是封闭的(Close for modification)。在对模块行为进行扩展时,不允许改动模块中已经存在的类的源代码。


我对软件设计模式的理解_设计模式_03

我对软件设计模式的理解


(1)简单工厂方法模式:一个工厂生产多个产品,只有一个工厂。​​Python设计模式(1):简单工厂方法模式​

(2)工厂方法模式:一个工厂生产一个产品,有多个工厂。​​Python设计模式(2):工厂方法模式​

(3)抽象工厂模式:一个工厂生产一类产品,有多个工厂。​​Python设计模式(3):抽象工厂模式​

(4)生成器模式:一步一步创建一个复杂的对象,只需指定对象的类型和内容,不必知道内部具体的细节。​​Python 设计模式(4):生成器模式​

(5)单例模式:在软件运行期间只有一个实例。​​Python 设计模式(5):单例模式​

(6)组合模式:一个或多个相似的对象构成的对象,各个对象有相似的功能。​​Python设计模式(6):组合模式​

(7)适配器模式:为了解决接口不一致的问题,两个软件模块需要一个适配器类进行适配。​​Python设计模式(7):适配器模式​

(8)外观模式:隐藏一个软件系统的内部实现细节。只提供一个接口,客户程序直接调用这个接口就行了。​​Python设计模式(8):外观模式​

(9)桥接模式:抽象与实现分离。​​Python设计模式(9):桥接模式​

(10)迭代器模式:用于遍历复杂的数据结构。​​Python设计模式(10):迭代器模式​

(11)访问者模式:作用于一个对象结构体上的元素的操作。可以在不改变结构体中的类的基础上定义新的操作。​​Python设计模式(11):访问者模式​

(12)命令模式:解除调用者与接收者之间的耦合。为响应客户请求的行动创建一个抽象。​​Python设计模式(12):命令模式​

(13)中介者模式:将所有对象之间的交互细节抽象到一个独立的类中。​​Python设计模式(13):中介者模式​

(14)策略模式:定义了一系列算法,将每个算法封装起来,并且使它们之间可以相互替换。​​Python设计模式(14):策略模式​

(15)状态模式:将不同状态下的行为封装在一个层次类的不同子类中。​​Python设计模式(15):状态模式​

今天的文章有不懂的可以后台回复“加群”,备注:小陈学Python,不备注可是会被拒绝的哦~!

扫描二维码

获取更多精彩

小陈学Python

我对软件设计模式的理解_python_06

看都看完了,还不点这里试试

我对软件设计模式的理解_python_07