Java设计模式入门

一、什么是设计模式

设计模式是解决特定问题的一系列套路,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结,具有一定的普遍性,可以反复使用。其目的是为了提高代码的可重用性、代码的可读性、代码的可扩展性、代码的可维护性、代码的健壮性和代码的可靠性。

二、为什么要学设计模式

1、应对面试中的设计模式相关问题,为技术拓展和升职加薪做准备。
2、在平常接触的框架和源代码中大量运用了设计模式,学习它可以轻松阅读优秀源代码和框架。
3、提高复杂代码的设计和开发能力,实现可维护、可扩展和高质量的代码。

三、常用设计原则

1、OCP(开闭原则),即对类、模块、方法等等应该是可以拓展的,但是不可修改。
2、SRP(单一职责原则),即对一个类而言,应该仅有一个引起它变化的原因。
3、DIP(依赖倒置原则),即高层模块不应该依赖低层模块,两个都应该依赖于抽象。抽象不应该依赖于细节,细节应该依赖于抽象。
4、LSP(里氏替换原则),即所有引用基类(父类)的地方必须能透明地使用其子类的对象。
5、ISP(接口隔离原则),即一个类对另一个类的依赖应该建立在最小的接口上。
6、LOD(迪米特法则/最少知道原则),即一个对象实体应当尽可能少地与其他实体发生相互作用。
7、CARP(组合聚合复用原则),尽量首先使用合成/聚合的方式,而不是使用继承。
8、DRY(避免重复原则),应当尽量避免出现重复代码块。
9、KISS(简单原则),应当保持接口、类、方法等简洁易用。

四、常用UML例图

1、什么是UML

UML(Unified Modeling Language)是统一建模语言,是一种可视化的面向对象建模语言,是一种用来对真实世界物理进行建模的标准标记,用图形方式表现典型的面向对象系统的整个结构。它的作用域不局限于支持面向对象的分析与设计,还支持从需求分析开始的软件开发的全过程。UML的定义包括UML语义和UML表示法两个部分,主要包括用例图、类图、对象图、状态图、构件图、部署图、协作图、交互序列图、活动图。
UML中最重要的就是节点和关系,搞清楚了所有的节点,就能够理清之间的关系。

2、基本符号表示

‘+’表示public,‘-’表示private,‘#’表示protected。如下图所示:
在这里插入图片描述

3、常见类图关系
  1. 泛化(Generalization)
    它是一种继承关系,表示一般与特殊的关系,它指定了子类如何特化父类的所有特征和行为。例如:狼是动物的一种,即有狼的特性也有动物的共性。
    用空心三角形+实线表示,它的箭头指向为带三角箭头的实线且箭头指向父类。如下图所示:
    在这里插入图片描述
    2、实现(Realization)
    它是一种类与接口的关系,表示类是接口所有特征和行为的实现。
    用空心三角形+虚线表示,它的箭头指向为带三角箭头的虚线且箭头指向接口。如下图所示:
    在这里插入图片描述

3、关联(Association)
它是一种拥有的关系,它使一个类知道另一个类的属性和方法;如:老师与学生,丈夫与妻子关联可以是双向的,也可以是单向的。双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头。
用实线箭头表示,它的箭头指向为带普通箭头的实心线,指向被拥有者。如下图所示:
在这里插入图片描述
4、聚合(Aggregation)
它是整体与部分的关系,且部分可以离开整体而单独存在。如车和轮胎是整体和部分的关系,轮胎离开车仍然可以存在。
用空心菱形+实线箭头表示,它的箭头指向为带空心菱形的实线,菱形指向整体。如下图所示:
在这里插入图片描述

5、组合(Composition)
它是整体与部分的关系,但部分不能离开整体而单独存在。如公司和部门是整体和部分的关系,没有公司就不存在部门。
用实心菱形+实线箭头表示,它的箭头指向为带实心菱形的实线,菱形指向整体。如下图所示:
在这里插入图片描述
6、依赖(Dependency)
它是一种使用的关系,即一个类的实现需要另一个类的协助,所以要尽量不使用双向的互相依赖,避免造成循环依赖。
用虚线箭头表示,它的箭头指向为带箭头的虚线,指向被使用者。如下图所示:
在这里插入图片描述

五、设计模式

设计模式可以分为三大类:

1、创建型模式

主要用于描述“怎样创建对象”,它的主要特点是“将对象的创建与使用分离”。
其中有单例模式、静态工厂模式、工厂方法模式、抽象工厂模式、建造者模式、原型模式。

2、结构型模式

主要通过对多个类和对象进行组合得到复杂结构的类,一般使用继承或者成员变量引用形式来实现。
其中有装饰器模式、适配器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。

3、行为型模式

行为模式不仅表达了对象和类,还表达了他们之间的交互,涉及到了对象和算法的分配。
其中有策略模式、模板方法模式、观察者模式、迭代器模式、责任链模式、命令模式、访问者模式、中介者模式、备忘录模式、状态模式、解释器模式。

接下来的文章将对工作中和框架中常涉及到的设计模式进行一一解析,敬请期待吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值