软件设计模式------概述

news/2024/10/20 7:07:25/

一:简述

目的:为了可重用代码,代码更容易被他人理解,提高代码的可靠性。

定义:是一套被反复使用,多数人知晓,经过分类编目的,代码设计经验的总结。

(通俗来说,软件模式可以认为是对软件开发这一特定“问题”的“解法”的某种统一表示

二:元素

基本要素:模式名称问题解决方案效果、目的、实例代码和相关设计模式

关键元素:

1.模式名称(Pattern name)

------通过一两个词描述

描述模式的问题、解决方案和效果。

命名:绝大多数模式都是根据其功能或模式结构来命名的。在学习设计模式时,应准确记忆该模式的中英文模式。

在已有的类库中,很多使用了设计模式的类名通常包含了所使用的设计模式的模式名称。

eg:(1)XXXAdapter :说明该类是一个适配器类,在设计时使用了适配器模式

    (2)XXXFactory :说明该类是一个工厂类,在设计时使用了工厂方法模式,且该类一定包含了一个工厂方法用于返回一个类的实例对象

2.问题(Problem)

描述了应在何时使用该模式、该模式存在的问题、该模式存在该问题的原因。

3.解决方案(Solution)

------通过类图、核心代码加以说明

描述了设计模式的组成成分,以及这些组成成分之间的相互关系、各自的职责、协作的方式。

4.效果(Consequences)

描述了模式应用的效果以及在使用模式时应当权衡的问题。

主要是包含了模式的优缺点分析。

三:分类

(1)根据目的分类

1.创建型模式:主要用于创建对象

2.结构型模式:主要用于处理类和对象的组合

3行为型模式:主要用于描述对类或对象怎样交互和怎样分配职责

(2)根据范围分类

即模式主要用来处理类之间的关系或对象之间的关系

1.类模式:处理类和类之间关系,这些关系通过继承建立,在编译时就被确定了下来,属于静态。

2.对象模式:处理对象间的关系,这些关系在运行时时刻变化,更具动态性。

范围 \ 目的创建型模式(5种)结构型模式(7种)行为型(11种)
类模式工厂方法模式(类)适配器模式

解释器模式

模板方法模式

对象模式

抽象工厂模式

建造者模式

原型模式

单例模式

(对象)适配器模式

桥接模式

组合模式

装饰模式

外观模式

享元模式

代理模式

职责链模式

命令模式

迭代器模式

中介者模式

备忘录模式

观察者模式

状态模式

策略模式

访问者模式

四:优点

1.使得设计方案更加通俗易懂,降低了开发人员理解系统的复杂度。

2.使得重用成功的设计更加容易,并避免那些导致不可重用的设计方案。

3.使得设计方案更加灵活且易于修改。

4.提高了软件系统的开发效率和软件质量,在一定程度上节约了设计成本。

5.有利于初学者更深入的理解面向对象思想。


http://www.ppmy.cn/news/1540460.html

相关文章

Linux 命令 —— grep、tail、head、cat、more、less(查看日志常用命令)

文章目录 查看日志常用命令grep 命令tail 命令head 命令cat 命令more 命令less 命令 查看日志常用命令 grep tail、head、cat、more、less grep 命令 grep [options] PATTERN filename:查找日志文件中的 PATTERN 关键字,用于过滤/搜索的特定字符。PAT…

告别ELK,APO提供基于ClickHouse开箱即用的高效日志方案——APO 0.6.0发布

ELK一直是日志领域的主流产品,但是ElasticSearch的成本很高,查询效果随着数据量的增加越来越慢。业界已经有很多公司,比如滴滴、B站、Uber、Cloudflare都已经使用ClickHose作为ElasticSearch的替代品,都取得了不错的效果&#xff…

初学结构化查询语言的操作

SQL: Structured Query Language 结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数 据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。 一,SQL的分类 1&#xff…

记录:网鼎杯2024赛前热身CRYPT02密码学

下载附件后发现附件为图片,图片打开正常,判断密文藏在图片中 使用 editor 软件打开图片,在最底下发现密文 判断这段密文为 base64 加密,尝试本地编写脚本解密 得到flag

mysql connect -- C api编译链接问题,接口介绍(初始化和销毁,连接,执行sql语句,获取结果集的元数据和数据,设置编码格式)

目录 mysql connect 介绍 开发环境 编译链接问题 编译 链接 接口介绍 初始化和销毁 mysql_init() 句柄 mysql_close() 链接数据库 mysql_real_connect() 参数 返回值 show processlist 给mysql下达命令 mysql_query() 参数 返回值 查询结果的获取 引入 …

基于python+dj+mysql的音乐推荐系统网页设计

音乐网站开发 如果你在学Python,需相关的【配套资料工具】作为研究[doge][脱单doge] 可以后台✉私信up主,发送👉关键词【音乐】 本章以音乐网站项目为例,介绍Django在实际项目开发中的应用,该网站共分为6个功能模块分…

leetcode289:生命游戏

根据 百度百科 , 生命游戏 ,简称为 生命 ,是英国数学家约翰何顿康威在 1970 年发明的细胞自动机。 给定一个包含 m n 个格子的面板,每一个格子都可以看成是一个细胞。每个细胞都具有一个初始状态: 1 即为 活细胞 &am…

宝塔PHP8.1安装fileinfo拓展失败解决办法

在宝塔面板中安装PHP8.1后,安装fileinfo扩展一直安装不上,查看日志有报错,于是手动来安装也报错。 宝塔报错: 手动命令行编译安装同,也有报错 cd /www/server/php/81/src/ext/fileinfo/ make distclean ./configure …