当前位置: 首页 > news >正文

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

一:简述

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

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

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

二:元素

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

关键元素:

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.lryc.cn/news/464533.html

相关文章:

  • 刷题/学习网站推荐
  • OQE-OPTICAL AND QUANTUM ELECTRONICS
  • 在 Spring MVC 应用程序中使用 WebMvcTest 注释有什么用处?
  • Chromium html<textarea>c++接口定义
  • OpenCV高级图形用户界面(13)选择图像中的一个矩形区域的函数selectROI()的使用
  • 《计算机视觉》—— 基于dlib库的人检检测
  • 分布式数据库安全可靠测评名录之平凯数据库(TiDB企业版)
  • 动态规划之打家劫舍
  • 嵌入式入门学习——8基于Protues仿真Arduino+SSD1306液晶显示数字时钟
  • 盘点现代浏览器的各种神奇能力,功能令人惊讶
  • 人工智能停滞:人工智能投资与人工智能采用之间的差距
  • 高效容器化技术(3)---docker镜像仓库
  • 使用docker搭建lnmp运行WordPress
  • 【设计模式】深入理解Python中的桥接模式(Bridge Pattern)
  • YOLOv11改进策略【卷积层】| SAConv 可切换的空洞卷积 二次创新C3k2
  • Javaweb基础-axios
  • 智能EDA小白从0开始 —— DAY20 OrCAD
  • C# WebApi 接口测试工具:WebApiTestClient应用技术详解
  • Qt_ymode自己实现
  • 5.3章节python中字典:字典创建、元素访问、相关操作
  • ECCV2024 Tracking 汇总
  • C语言知识点
  • ICMP协议以及ARP欺骗攻击
  • qt5.12.12插件机制无法加载插件问题
  • 机器学习面试笔试知识点-线性回归、逻辑回归(Logistics Regression)和支持向量机(SVM)
  • SpringBoot民宿预订系统设计与实现
  • linux环境下C程序的编译过程以及makefile的简单使用
  • 【从零开始的LeetCode-算法】945. 使数组唯一的最小增量
  • Java程序设计:spring boot(2)
  • 服务器运维监控平台