前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >我对软件设计模式的理解

我对软件设计模式的理解

作者头像
不可言诉的深渊
发布2019-07-27 19:51:05
1.1K0
发布2019-07-27 19:51:05
举报

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

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

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

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

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

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

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

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

软件设计模式的分类

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

面向对象

分布式计算

企业应用软件

面向服务的体系结构

创建型模式

从混沌到结构

领域逻辑模式

服务设计模式

结构型模式

分布式基础设施

数据源架构模式

服务库设计模式

行为型模式

事件分离与分发

对象-关系行为模式

服务组合设计模式

接口划分

对象-关系结构模式

组件划分

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

应用控制

Web 表现模式

并发

分布模式

同步

离线并发模式

对象交互

会话状态模式

适配与扩展‍‍

基本模式

模态行为

资源管理

数据库访问

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

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

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

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

我对软件设计模式的理解

(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):状态模式

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-06-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python机器学习算法说书人 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档