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

相关推荐
培风图南以星河揽胜18 小时前
Java版LeetCode热题100之零钱兑换:动态规划经典问题深度解析
java·leetcode·动态规划
钝挫力PROGRAMER18 小时前
UML构造块中的关系梳理
软件工程·uml
未来之窗软件服务18 小时前
计算机等级考试—UML 核心图分类与图标对照表—东方仙盟练气期
uml·计算机软考·仙盟创梦ide·东方仙盟
启山智软19 小时前
【中大企业选择源码部署商城系统】
java·spring·商城开发
我真的是大笨蛋19 小时前
深度解析InnoDB如何保障Buffer与磁盘数据一致性
java·数据库·sql·mysql·性能优化
怪兽源码19 小时前
基于SpringBoot的选课调查系统
java·spring boot·后端·选课调查系统
恒悦sunsite19 小时前
Redis之配置只读账号
java·redis·bootstrap
梦里小白龙19 小时前
java 通过Minio上传文件
java·开发语言
人道领域19 小时前
javaWeb从入门到进阶(SpringBoot事务管理及AOP)
java·数据库·mysql
sheji526120 小时前
JSP基于信息安全的读书网站79f9s--程序+源码+数据库+调试部署+开发环境
java·开发语言·数据库·算法