【设计模式】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设计模式(图解+框架源码分析+实战)

相关推荐
七月丶2 小时前
别再手动凑 PR 了:这个 AI Skill 会按仓库习惯自动建分支、拆提交、提 PR
人工智能·设计模式·程序员
刀法如飞2 小时前
从程序员到架构师:6大编程范式全解析与实践对比
设计模式·系统架构·编程范式
九狼2 小时前
Flutter + Riverpod +MVI 架构下的现代状态管理
设计模式
SimonKing3 小时前
OpenCode AI辅助编程,不一样的编程思路,不写一行代码
java·后端·程序员
FastBean3 小时前
Jackson View Extension Spring Boot Starter
java·后端
Seven974 小时前
剑指offer-79、最⻓不含重复字符的⼦字符串
java
皮皮林55113 小时前
Java性能调优黑科技!1行代码实现毫秒级耗时追踪,效率飙升300%!
java
冰_河14 小时前
QPS从300到3100:我靠一行代码让接口性能暴涨10倍,系统性能原地起飞!!
java·后端·性能优化
桦说编程16 小时前
从 ForkJoinPool 的 Compensate 看并发框架的线程补偿思想
java·后端·源码阅读