设计模式概述

1.设计简介

1.1什么是设计模式?

  • 面向对象语言开发过程中,遇到种种的场景和问题,提出的解决方案和思路,沉淀下来,解决问题的思路

1.2什么是设计模式六大原则?

  • 面向对象语言开发过程中,推荐的一些指导性原则,没有明确的招数,而且也经常被忽视/违背,也是前辈总结,也是为了站在前辈的肩膀上

1.3正确使用设计模式的优点

  • 提高思维、编码、设计能力
  • 提高效率、缩短开发周期
  • 使代码复用性高、可读性强、耦合性低、可维护性高

2.六大原则

2.1单一职责原则

  • 定义:一个类只负责一个功能领域中的相应职责,就一个类而言,应该只有一个引起它变化的原因
  • 问题由来:如果一个类负责两个职责,当其中一个职责因为需求需要对类进行改变时,有可能导致原本运行正常的另一个职责功能发生故障
  • 单一职责原则是实现高内聚、低耦合的指导方针

2.1.1单一职责原则的优点

  • 降低类的复杂度
  • 提高类的可读性,提高系统的可维护性
  • 降低由变类的变更引起功能故障的风险

2.2里氏替换原则

  • 定义:所有引用父类的地方必须能透明地使用其子类对象
  • 优点:代码共享
  • 缺点:耦合性变高,代码灵活性降低,但总体上利大于弊

2.3迪米特法则

  • 定义:一个软件实体应当尽量减少与其他实体发生相互作用
  • 目的:降低类之间的耦合度、提高模块的相对独立性
  • 使用迪米特法则要确保高内聚和低耦合的同时,保证系统的结构清晰

2.3迪米特法则的优点

  • 降低了耦合度、提高了模块的相对独立性
  • 提高类的复用率、系统的扩展性

2.4依赖倒置原则

  • 核心思想:要面向接口编程,不要面向实现编程

2.4.1依赖倒置原则的优点

  • 降低耦合性
  • 提高系统稳定性
  • 减少并行开发引起的风险
  • 提高代码的可读性、可维护性

2.5接口隔离原则

  • 使用多个专门的接口,而不使用单一的总接口,即客户端不应该依赖那些它不需要的接口

2.5.1接口隔离原则的优点

  • 提高系统的灵活性、可维护性
  • 降低系统的耦合性
  • 接口大小可自定义
  • 减少代码冗余

2.6开闭原则

  • 定义:一个软件实体应当对扩展开放,对修改关闭。即软件实体应尽量在不修改原有代码的情况下进行扩展
  • 问题与来:任何软件都需要随着需求进行迭代,通过扩展软件实体的行为实现更新迭代,而不是对已有代码进行修改
  • 为了满足开闭原则,需要对系统进行抽象化设计,抽象化是开闭原则的关键。以达到只需要增加新的具体类实现更新迭代的目的

2.6.1开闭原则的优点

  • 提高代码的复用性
  • 提高软件的可维护性

2.创建型

  • 对象实例化的模式,用于解耦对象的实例化过程

2.1单列模式

  • 某个类智能有一个实例,提供一个全局的访问点

2.2工厂模式

  • 一个工厂类根据传入的参量决定创建出哪一种类的实例

2.3抽象工厂模式

  • 创建相关或依赖对象的家族,而无需明确指定具体类

2.4建造者模式

  • 封装一个复杂对象的创建过程,并可以按步骤构造

2.5原型模式

  • 通过复制现有的实例创建新的实例

3.结构型

  • 把类或对象结合在一起形成一个更大的结构

3.1适配器模式

  • 将一个类的方法接口转换成客户希望的另一个接口

3.2桥接模式

  • 将抽象部分和实现部分分离,使他们都可以独立变化

3.3装饰器模式

  • 动态的给对象添加新的功能

3.4组合模式

  • 将对象组合成树型结构以表示“部分-整体”的层次结构

3.5外观模式

  • 对味提供一个统一的方法,来访问系统中的一群接口

3.6享元模式

  • 通过共享技术来有效的支持大量细粒度的对象

3.7代理模式

  • 为其他对象提供一个代理以便控制这个对象的访问

4.行为型

  • 类和对象如何交互及划分责任和算法

4.1模版模式

  • 定义一个算法结构,而将一些步骤延迟到子类实现

4.2命令模式

  • 将命令请求封装为一个对象,使得可以用不同的请求来进行参数化

4.3迭代器模式

  • 一种遍历访问聚合对象中各个元素的方法,不暴露该对象的内部结构

4.4观察者模式

  • 对象间的一对多的依赖关系

4.5仲裁者模式

  • 用一个中介对象来封装一系列的对象交互

4.6备忘录模式

  • 在不破坏封装的前提下,保持对象内部状态

4.7解释器模式

  • 给定一个语言,定义他的文法的一种表示,并定义一个解释器

4.8状态模式

  • 允许一个对象在器对象内部状态改变时改变它的行为

4.9策略模式

  • 定义一系列算法,把他们封装起来,并且使他们可以相互替换

4.10责任链模式

  • 将请求地发送者和接收者解耦,使得多个对象都有处理这个请求的机会

4.11访问者模式

  • 不改变数据结构的前提下,增加作用于一组对象元素的新功能

5.单列的七种模式

6.三种工厂模式的区别和联系

7.Spring用到了那些设计模式

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白熊又宕机了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值