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

设计模式概述

1. 概念

设计模式概念的提出:

  设计模式最早于1977年在建筑设计行业中被 克里斯托夫·亚历山大(Christopher Alexander) 在他的著作 《建筑模式语言:城镇、建筑、构造》 中提出。
  软件工程界在1990年开始了设计模式话题的研讨,直到1995年 四人组(GoF,Gang of For) 在著作 《设计模式:可复用面向对象软件的基础》 一书中提出软件工程的设计模式。此书中共收录了23种设计模式。


软件设计模式的概念:

  软件设计模式(Software Design Pattern) 是一套对于代码开发经验的总结,是解决特定问题的一系列套路,具有一定的普遍性,可以反复使用。其本质是面向对象设计原则的实际运用,是对类的封装性、继承性和多态性以及类的关联关系和组合关系的充分理解。


设计模式的优点:

  • 提高开发者的思维能力、编程能力、设计能力、开发效率
  • 使代码标准化、工程化
  • 提高代码可重用性、可读性、可靠性、灵活性、可维护性

设计模式三大类:

  • 创建型模式
    以更低的耦合度实例化对象,使对象的创建与使用分离
    • 单例模式
    • 工厂模式
    • 抽象工厂模式
    • 建造者模式
    • 原型模式
  • 结构型模式
    将一个简单的类/对象组装为一个更大的结构
    • 装饰器模式
    • 代理模式
    • 桥接模式
    • 适配器模式
    • 组合模式
    • 外观模式
    • 享元模式
  • 行为型模式
    描述类/对象的职责分配(交互方式)来实现较为复杂的任务
    • 策略模式
    • 模板模式
    • 命令模式
    • 迭代器模式
    • 观察者模式
    • 仲裁者模式
    • 备忘录模式
    • 解释器模式
    • 状态模式
    • 责任链模式
    • 访问者模式

2. UML类图绘制

统一建模语言(Unified Modeling Language,UML):
  用来设计软件的可视化建模语言,能表达软件设计中的动态与静态信息。推荐的UML图绘制工具:processon 。

UML图组成讲解:

  • 类名
    • 斜体——abstract
    • _——static
    • <<>>——接口
  • 访问修饰符:
    • + —— public
    • # —— protected
    • ~ —— package,不写默认为~
    • - —— private
  • 静态方法/变量:
    • _——static
  • 属性表示:
    • 访问修饰符 变量名: 变量类型
  • 方法表示:
    • 参数有两种写法
      访问修饰符 方法名(参数1:参数类型1, 参数2:参数类型2): 返回类型
      访问修饰符 方法名(参数类型1 参数1, 参数类型2 参数2): 返回类型
      
    • 不写返回类型,默认为void

对象间的关系的UML图绘制:对象间的关系

http://www.lryc.cn/news/8439.html

相关文章:

  • 华为OD机试 - 箱子之形摆放(Python)| 真题+思路+考点+代码+岗位
  • 第九章:创建用户和用户权限
  • 如何制定人生目标
  • 用户认证概述
  • XQuery FLWOR + HTML
  • MySQL用户管理
  • C++【模板初阶】
  • 华为OD机试 - 磁盘容量(Python)| 真题+思路+考点+代码+岗位
  • 更专业、安全、可控!政企都选择WorkPlus私有化部署
  • [SDX12] X12 USB to LTE IPA概率不生效问题分析及优化策略
  • mysql8.0(单表查询与多表拆线)
  • 用于汽车传感器的混合点云语义压缩:性能评估
  • 最流行十大在线客服系统排行榜-市场常见客服系统软件排行-2023最新
  • 算法笔记(六)—— 二叉树相关概念及经典算法题
  • redux全网最详细教程
  • 华为OD机试 - 匿名信(Python)| 真题+思路+考点+代码+岗位
  • 【Python】编写代码实现指定下标值顺序进行正序和倒序排序算法编程
  • Sitara™处理器的产品开发路线图
  • 岗位来啦-华为研发OD招聘
  • 【LeetCode】剑指 Offer 06. 从尾到头打印链表 p58 -- Java Version
  • 童年回忆--扫雷(包括标记功能和递归展开)--万字讲解让你学会扫雷制作
  • 【重器】GPS北斗卫星时钟基准与卫星授时服务技术原理
  • 软件测试未来发展趋势怎么样
  • aws Distro for OpenTelemetry 可观测性workshop记录
  • Leetcode力扣秋招刷题路-0068
  • Nginx介绍及安装(windows版,Linux版)
  • Camera | 4.瑞芯微平台MIPI摄像头应用程序编写
  • 【1250. 检查「好数组」】
  • Spring 如何解决循环依赖?
  • CocoaPods使用指南