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

news2024/10/19 18:29:49

一:简述

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

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

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

二:元素

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

关键元素:

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.coloradmin.cn/o/2218668.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

众数信科荣登“2024 CHINA AIGC 100”榜单

2024年10月17日,由非凡产研推出的「2024 CHINA AIGC 100」榜单隆重发布,众数信科凭借领先的企业AI智能体解决方案能力荣登榜单。 非凡产研AIGC 100 评选旨在挖掘国内具有高潜力的AI应用,为AI产业的高质量发展注入新动力。榜单覆盖了教育、医疗…

无人机之融合集群技术篇

无人机的融合集群技术是一个涉及多个领域的复杂技术体系,它结合了无人机技术、自组网技术、集群控制技术以及反制设备等多个方面,旨在实现多架无人机之间的协同、编队、信息共享、任务分配和高效作业。 一、无人机自组网技术 无人机自组网技术是一种利用…

vulnhub靶场之digitalworld.local DEVELOPMENT

一.环境搭建 1.靶场描述 This machine reminds us of a DEVELOPMENT environment: misconfigurations rule the roost. This is designed for OSCP practice, and the original version of the machine was used for a CTF. It is now revived, and made slightly more nefari…

Linux 之 fdisk 【磁盘分区管理】

删除分区 1.查看磁盘信息 lsblk 2.删除分区sdb硬盘下的所有分区 # 1 进入d的磁盘分区 fdisk /dev/sdb # 2 输入p查看磁盘的分区信息 # 3 输入d进入删除磁盘分区命令 # 4 选择要删除的分区号 重复3,4 全部删除 # 5 w 保存退出并生效操作信息 (输入q…

面试应该问什么?

在求职者面试的过程中,向面试官提问是一个展现自己积极态度、对职位和公司兴趣以及进一步了解工作环境和职业发展机会的重要环节。以下是一些求职者可以在面试中向面试官提问的问题,这些问题旨在帮助你更全面地了解未来的工作环境、团队文化、以及个人职…

联系拯救者Y9000P2022笔记本电脑进入BIOS快捷键

联系拯救者Y9000P2022笔记本电脑进入BIOS快捷键 文章目录 联系拯救者Y9000P2022笔记本电脑进入BIOS快捷键1. 进入BIOS快捷键2. 快速进入BIOS设置界面3. 快速进入启动项选择界面 1. 进入BIOS快捷键 进入BIOS设置界面的快捷键为F2快速进入启动项选择界面的快捷键为F12 2. 快速进…

82.【C语言】数据结构之顺序表的初始化和销毁

目录 1.线性表 2.分类 1.静态顺序表:使用定长数组存储元素 代码示例(写入Seqlist.h中) 2.动态顺序表:使用与动态内存管理有关的函数 代码示例(写入Seqlist.h中) 补:数据管理的四个需求:增改删查 3.操作顺序表 1.初始化顺序表 1.不开辟空间 2.开辟空间 1…

音乐播放器-0.专栏介绍​

1.简介 本专栏使用Qt QWidget作为显示界面,你将会学习到以下内容: 1.大量ui美化的实例。 2.各种复杂ui布局。 3.常见显示效果实现。 4.大量QSS实例。 5.Qt音频播放,音乐歌词文件加载,展示。 6.播放器界面换肤。 相信学习了本专栏…

Vxe UI vue vxe-table grid 性能优化,提高渲染性能

Vxe UI vue vxe-table vxe-grid 本身就支持虚拟滚动以及灵活的扩展,可也是由于太过灵活,可定制化程度太高,比如单元格自定义渲染,一旦写得不好,就会影响渲染卡顿。 vxe-table 和 vxe-grid 直接使用 vxe-grid&#xf…

AI论文写作:如何轻松实现高原创度大揭秘

随着人工智能技术的迅猛进步,AI论文写作工具在学术界开始崭露头角,作为一种辅助手段。这些工具不仅能高效地生成论文的初步版本或部分章节,而且其产出的内容往往展现出高度的创新性。本文将探讨AI论文写作工具为何能产出如此高原创度的内容&a…

欢迎观看在线直播|李航和张志华等嘉宾解读:人工智能和诺贝尔奖相遇,是偶然还是必然?

人工智能是新一轮产业革命的核心技术,受到了各个国家和不同领域人士的高度重视。不仅如此,它还为基础科学的研究创造出了新的研究范式。诺贝尔奖是科学界最著名的奖项之一,可谓是万众瞩目。2024年的诺贝尔物理奖和化学奖均授予了具有人工智能…

mysql的各种存储引擎

文章目录 前言1. InnoDB特点 2. MyISAM特点innodb与myisam引擎之间的区别 3. MEMORY特点 4. ARCHIVE特点 5. NDBCluster特点 6. FEDERATED特点 7. CSV特点 总结 前言 MySQL 支持多种存储引擎,每种引擎都有其独特的功能和适用场景。存储引擎是指数据库管理系统用来存…

Apache Seatunnel Zeta引擎-启动脚本分析

Apache SeaTunnel Zeta引擎的集群模式启动的第一步是执行bin/seatunnel-cluster.sh脚本,所以先来学习下这个脚本。 脚本执行流程分析 脚本简要注释 #!/bin/bash # # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license a…

【Tinymce】富文本编辑器在vue项目中的使用;引入付费格式刷,上传视频、图片

引言 富文本编辑器有很多,对比了一下,还是决定用tinymce(号称宇宙最强),基础的插件确实好用,但是一些更好用的插件,比如格式刷等都是高级版(付费),当然也有人…

day-69 构成整天的下标对数目 II

思路 根据题意,每个元素可以重复使用,所以只需统计对24取余后值值相同的个数,如当前数字对24取余后是3,那么只需知道取余后为21的元素个数即可知道当前元素可与,多少个元素构成整天的下标的数目 解题过程 从左往右遍历…

数据结构编程实践20讲(Python版)—20并查集

本文目录 20 并查集(Union-Find Set)S1 说明并查集的定义并查集基本操作并查集优化并查集特点应用领域 S2 示例S3 问题1:朋友圈问题S4 问题2:网络连接恢复问题S5 问题3:随机生成迷宫 往期链接 01 数组02 链表03 栈04 …

023_Layout_and_Containers_in_Matlab界面布局与容器

容器 基于uifigure进行的图形用户界面设计,可以分为以下几种容器类型: 图窗:uifigure布局:uigridlayout面板:uipanel标签页:uitabgroup、uitab 这几个对象除uifigure外相互可以形成嵌套的关系&#xff0…

【新人系列】Python 入门(二):Python IDE 介绍

✍ 个人博客:https://blog.csdn.net/Newin2020?typeblog 📝 专栏地址:https://blog.csdn.net/newin2020/category_12801353.html 📣 专栏定位:为 0 基础刚入门 Python 的小伙伴提供详细的讲解,也欢迎大佬们…

leetcode.204.计数质数

#中等#枚举 给定整数 n ,返回 所有小于非负整数 n 的质数的数量 。 埃氏筛 枚举没有考虑到数与数的关联性,因此难以再继续优化时间复杂度。接下来我们介绍一个常见的算法,该算法由希腊数学家厄拉多塞(Eratosthenes)提…

Python爬虫:自动化获取商品评论数据

为什么选择Python爬虫API 高效的数据处理:Python的数据处理能力,结合Pandas等库,可以轻松处理和分析大量的评论数据。丰富的库支持:Python拥有丰富的库,如requests用于发送HTTP请求,BeautifulSoup用于解析…