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

【设计模式】UML和设计原则

一、分类

1、创建型模式
用于描述“怎样创建对象" 它的主要特点是“将对象的创建与使用分离"。GoE(四人组)书中提供了单例、原型、工厂方法、抽象工厂、建造者等 5 种创建型模式。
2、结构型模式
用于描述如何将类或对象按某种布局组成更大的结构,GoE(四人组)书中提供了代理、适配器、桥接、装饰、外观、享元、组合等7 种结构型模式。
3、行为型模式
用于描述类或对象之间怎样相互协作共同完成单个对象无法单独完成的任务,以及怎样分配职责。GoE(四人组)书中提供了模板方法、策略、命令、职责链、状态、观察者、中介者、迭代器、访问者、备忘录、解释器等 11 种行为型模式。

二、UML图

统一建模语言(UML)是用来设计软件的可视化建模语言。特点是简单、统一、图形化、能表达软件设计中的动态与静态信息。
UML 从目标系统的不同角度出发,定义了用例图、类图、对象图、状态图、活动图、时序图、协作图、构件图、部署图等 9种图。

(一)类图

  类图(Class diagram)是显示了模型的静态结构,特别是模型中存在的类、类的内部结构以及它们与其他类的关系等。类图不显示暂时性的信息。类图是面向对象建模的主要组成部分。
  在软件工程中,类图是一种静态的结构图,描述了系统的类的集合,类的属性和类之间的关系,可以简化了人们对系统的理解。
  类图是系统分析和设计阶段的重要产物,是系统编码和测试的重要模型。

在UML类图中,类使用包含类名属性(field)方法(method)且带有分割线的矩形来表示:
在这里插入图片描述
属性/方法名称前加的加号和减号表示了这个属性/方法的可见性,UL类图中表示可见性的符号有三种

  • +表示public
  • -表示private
  • #表示protected

属性的完整表示方式是:可见性名称 :类型 [= 缺省值]
方法的完整表示方式是:可见性名称(参数列表)[: 返回类型]

注意:
1、中括号中的内容表示可选
2、也有将类型放到变量名前面,返回值放到方法名前面

(二)类之间关系

关联关系是对象之间的一种引用关系,用于表示一类对象与另一类对象之间的联系,如老师和学生、师傅和徒弟、丈夫和妻子等。关联关系是类与类之间最常用的一种关系,分为一般关联关系、聚合关系和组合关系。我们先介绍一般关联。
关联又可以分为单向关联双向关联自关联

1、关联关系

(1)单向关联

在这里插入图片描述

(2)双向关联

在这里插入图片描述

(3)自关联

在这里插入图片描述

2、聚合关系

在这里插入图片描述

3、组合关系

在这里插入图片描述

4、依赖关系

在这里插入图片描述

5、继承关系

在这里插入图片描述

6、实现关系

在这里插入图片描述

三、软件设计原则

在软件开发中,为了提高软件系统的可维护性和可复用性,增加软件的可扩展性和灵活性,程序员要尽量根据 6条原则来开发程序,从而提高软件开发效率、节约软件开发成本和维护成本。

(一)开闭原则

  对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。简言之,是为了使程序的扩展性好,易于维护和升级。
  想要达到这样的效果,我们需要使用接口和抽象类:
  因为抽象灵活性好,适应性广,只要抽象的合理,可以基本保持软件架构的稳定。而软件中易变的细节可以从抽象派生来的实现类来进行扩展,当软件需要发生变化时,只需要根据需求重新派生一个实现类来扩展就可以了。
在这里插入图片描述
在这里插入图片描述

(二)里氏代换原则


在这里插入图片描述
在这里插入图片描述

(三)依赖倒转原则

在这里插入图片描述

(四)接口隔离原则

在这里插入图片描述

在这里插入图片描述

(五)迪米特法则

在这里插入图片描述
在这里插入图片描述

(六)合成复用原则

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
视频参考:黑马程序员Java设计模式详解, 23种Java设计模式(图解+框架源码分析+实战)

http://www.dtcms.com/a/569756.html

相关文章:

  • 东莞网站开发找谁建筑网站建设公司
  • 2025进博会4310家展商名录
  • 手机软件开发网站个人网站名称有哪些
  • 名气特别高的手表网站遵义市做网站的地方
  • LNMT部署zrlog个人博客(动静分离集群)
  • 企业网站功能模块设计阜阳哪里有做网站的
  • 如何做网站赚流量钱织梦做中英文企业网站
  • 【Unet++ MobileNetv2语义分割部署至RK3588】模型训练→转换RKNN→开发板部署
  • 深圳做网站做app我想自己做网站可以赚钱
  • 新颖网站页面设计wordpress弹窗登录注册插件
  • 服务端开发的基本概念
  • 快递鸟电子面单打印接口技术对接文档
  • FreeRTOS事件组全解析:多任务同步核心技巧
  • 网站的头尾和导航的公用文件wordpress主题 问答
  • 【GlobalMapper精品教程】096:连接PostGIS数据库(Postgresql)
  • 网站备案服务商查询网站域名使用期
  • 机器学习日报12
  • 【文档】Stomp 协议
  • 自己的网站怎么接广告联盟设计库
  • 网站怎么解析域名解析网站制作公司官网南京
  • liunx文件及目录管理和vim编辑
  • [leetcode]对顶堆,对数时间添加元素,常数时间取中位数(或者第K大的数)
  • 公司软件网站建设免费dw网页模板
  • 力扣146LRU缓存
  • 网站怎么做充值系统下载网站需要写哪些内容
  • 网站有没有做网站地图怎么看vi设计案例ppt
  • 网站页面设计培训班长沙人才招聘网最新招聘2024
  • 虚幻引擎5 GAS开发俯视角RPG游戏 P07-02 授予能力
  • 真实的大模型中,embedding映射的高维矩阵维度和 attention矩阵运算的规模尺寸?
  • 中山网站设计与建设北京网上注册公司