什么是设计模式

设计模式是软件开发中一套成熟的经验总结,旨在提高代码重用性、可读性和可靠性。它遵循六大设计原则,如开闭原则、里氏代换原则等。设计模式分为创建型、结构型和行为型三类,每类都有特定的模式,如工厂模式、装饰模式和策略模式等。这些模式有助于实现灵活、可扩展的软件架构。
摘要由CSDN通过智能技术生成

什么是设计模式

软件设计模式(Software Design Pattern),又称设计模式。

设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。

使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性

设计模式的优点

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

设计模式六大原则

开闭原则(OCP)

开闭原则(Open Closed Principle),定义:一个软件实体如类,模块和函数应该对扩展开放,对修改关闭

在程序需要进行扩展时,不能去修改原有的代码,而是要扩展原有代码,实现一个热插拔的效果。

概括:为了使程序的扩展性好,易于维护和升级,需要使用接口和抽象类等。

里氏代换原则

任何基类可以出现的地方,子类一定可以出现。子类对父类的方法尽量不要重写和重载。

一个可以接受基类对象的地方必然可以接受一个子类对象。在程序中尽量使用基类类型来对对象进行定义,而在运行时再确定其子类类型,使用子类来替换父类对象。

依赖倒转原则

面向接口编程,依赖于抽象,不依赖于具体。要针对抽象层编程,而不要针对具体类编程。

接口隔离原则

不应该依赖那些它不需要的接口,使用多个专门的接口来取代一个统一的接口。

迪米特原则

又称最少知道原则(Demeter Principle),一个软件实体对其他实体的引用越少越好,或者说如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用,减少类之间的耦合度。

合成复用原则

系统中应该尽量多使用组合/聚合关系,少用甚至不用继承关系。

在面向对象设计中,可以通过两种基本方法来复用已有的设计和实现,即通过组合/聚合关系或者通过继承。

继承复用:实现简单,易于扩展。但是破坏系统的封装性。从基类继承而来的实现是静态的,不可能在运行时发生改变,没有足够的灵活性,只能在有限的环境中使用。(“白箱”复用)

组合/聚合复用:耦合度相对较低,选择性地调用成员对象的操作,可以在运行时动态进行。(“黑箱”复用)

设计模式的分类

目的划分

根据目的来分,分为三大类:创建型模式(Creational Patterns)、结构型模式(Structural Patterns)、行为型模式(Behavioral Patterns)。

创建型模式

用于描述“怎样创建对象”,它的主要特点是“将对象的创建和使用分离”,增加已有代码的灵活性和可复用性。

创建型模式包括:工厂模式、抽象工厂模式、单例模式、建造者模式、原型模式等5种模式。

结构型模式

用于描述如何将类或对象按某种布局组成更大的结构,并同时保持结构的灵活和高效。。

结构型模式包括:代理模式、适配器模式、桥接模式、装饰模式、外观模式、享元模式、组合模式等7种模式。

行为型模式

用于描述类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务,以及怎样分配职责。

行为型模式包括:模板方法、策略、命令、职责链、状态、观察者、中介者、迭代器、访问者、备忘录、解释器等11种模式。

作用范围划分
类模式

用于处理类与字类之间的关系,这些关系通过继承来建立,是静态的,在编译时刻便确定下来了。

类模式包括:工厂方法、(类)适配器、模板方法、解释器。

对象模式

用于处理对象之间的关系,这些关系可以通过组合或聚合来实现,在运行时刻是可以变化的,更具动态性。

对象模式包括:抽象工厂模式、单例模式、建造者模式、原型模式、代理模式、桥接模式、装饰模式、外观模式、享元模式、组合模式、策略、命令、职责链、状态、观察者、中介者、迭代器、访问者、备忘录。

总结

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

努力的蚂蚁【你若】

如果帮助到了您,一分也是爱

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

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

打赏作者

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

抵扣说明:

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

余额充值