设计模式概述

本文介绍了设计模式的基本概念,强调了它在提高代码可重用性、可读性和可靠性上的作用。文章详细阐述了设计原则,如单一职责原则、开闭原则等,并探讨了UML类图中的各种关系。此外,文章还概述了设计模式的分类,包括创建型、结构型和行为型模式,并列举了各个模式的应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、设计模式概念

软件设计模式(Software Design Pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。它描述了在软件设计过程中的一些不断重复发生的问题,以及该问题的解决方案。也就是说,它是解决特定问题的一系列套路,是前辈们的代码设计经验的总结,具有一定的普遍性,可以反复使用。其目的是为了提高代码的可重用性、代码的可读性和代码的可靠性。

设计模式的本质是面向对象设计原则的实际运用,是对类的封装性、继承性和多态性以及类的关联关系和组合关系的充分理解。正确使用设计模式具有以下优点。

  • 可以提高程序员的思维能力、编程能力和设计能力。
  • 使程序设计更加标准化、代码编制更加工程化,使软件开发效率大大提高,从而缩短软件的开发周期。
  • 使设计的代码可重用性高、可读性强、可靠性高、灵活性好、可维护性强。

2、设计原则

  • 单一职责原则:一个类只干一件事,实现类要单一。
  • 接口隔离原则:一个接口只干一件事,接口要精简单一。
  • 依赖倒转原则:高层不应该依赖低层,要面向接口编程。
  • 里氏替换原则:不要破坏继承体系,子类重写方法功能发生改变,不应该影响父类方法的含义。
  • 开闭原则:对扩展开放,对修改关闭。
  • 迪米特法则:一个对象应该对其他对象保持最小的了解,尽量降低类与类之间的耦合。又叫最少知道原则。
  • 合成复用原则:尽量使用对象组合(has-a)、聚合(contains-a),而不是继承关系(is-a)达到软件复用的关系。

3、UML类图

UML类图展现了一组对象、接口、协作和它们之间的关系。

按类与类之间关系的紧密程度从弱到强划分,类与类之间的关系包括:

  • 依赖:一个类必须依赖另一个类存在。
  • 关联:关联关系表示两个类之间存在一种结构关系,这种关系比依赖关系更紧密。关联可以有方向,可以是单向关联,也可以是双向关联。
  • 聚合(has-a):一种特殊的关联,聚合表示整体与部分的关系。通常在定义一个整体类后,再去分析这个整体类的组成结构。
  • 组合(contains-a):一种特殊的关联,也表示类之间整体和部分的关系,但是组合关系中部分和整体具有统一的生存期。一旦整体对象不存在,部分对象也将不存在。部分对象与整体对象之间具有共生死的关系。
  • 实现:接口的实现。
  • 继承(泛化):类的继承关系。

4、设计模式分类

创建型模式:对象实例化的模式,创建型模式用于解耦对象的实例化过程。

  • 单例模式:保证一个类仅有一个实例,并且提供一个全局访问点。
  • 抽象工厂模式:不同条件下创建不同实例。
  • 工厂方法模式:不同条件下创建不同实例。
  • 原型模式:通过拷贝原型创建新的对象。
  • 建造者模式:用来创建复杂的复合对象。

结构型模式:把类或对象结合在一起形成一个更大的结构。

  • 适配器模式:将原来不兼容的两个类融合在一起。
  • 桥接模式:将两个能够独立变化的部分分离开来。
  • 装饰模式:为对象添加新功能。
  • 组合模式:将整体与局部(树形结构)进行递归组合,让客户端能够以一种的方式对其进行处理。
  • 外观模式:对外提供一个统一的接口用来访问子系统。
  • 亨元模式:使用对象池来减少重复对象的创建。
  • 代理模式:为其他对象提供一种代理以控制对这个对象的访问。

行为型模式:类和对象如何交互,及划分责任和算法。

  • 模板方法模式:定义一套流程模板,根据需要实现模板中的操作。
  • 命令模式:将请求封装成命令,并记录下来,能够撤销与重做。
  • 访问者模式:稳定数据结构,定义新的操作行为。
  • 策略模式:封装不同的算法,算法之间能互相替换
  • 状态模式:根据不同的状态做出不同的行为。
  • 观察者模式:状态发生改变时通知观察者,一对多的关系。
  • 备忘录模式:保存对象的状态,在需要时进行恢复。
  • 中介者模式:将对象之间的通信关联关系封装到一个中介类中单独处理,从而使其耦合松散。
  • 迭代器模式:提供一种方法顺序访问一个聚合对象中的各个元素。
  • 解释器模式:给定一个语言,定义它的语法表示,并定义一个解释器,这个解释器使用该标识来解释语言中的句子。
  • 责任链模式:拦截的类都实现统一接口,每个接收者都包含对下一个接收者的引用。将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。

参考设计模式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值