「撸一手好代码」设计模式之简介

介绍

设计模式是在软件设计中,针对常见问题的可复用解决方案,它们提供了一种标准的、经过验证的方式来组织代码和对象,以提高软件的可维护性、可扩展性和可重用性。

设计模式就像是烹饪中的经典食谱,它为软件开发者提供了解决问题的“烹饪”指南。面对软件开发中复杂多变的“食材”(需求、技术难题等),设计模式就像是一份精心调配的“菜谱”,能够帮助开发者有条理地组织代码、设计架构,从而烹饪出既美味又营养均衡的“软件大餐”。

七大原则

单一职责原则(Single Responsibility Principle)

  • 核心思想:一个类应该只有一个引起它变化的原因。即一个类只负责一项职责。
  • 应用场景:当一个类承担的职责过多时,应将其拆分为多个类,每个类只负责一项职责。

开闭原则(Open-Closed Principle)

  • 核心思想:软件实体(类、模块、函数等)应该对扩展开放,对修改关闭。即当软件需要增加新功能时,应该通过扩展现有代码来实现,而不是修改现有代码。
  • 实现方法:通过“抽象约束、封装变化”来实现,即通过接口或抽象类为软件实体定义一个相对稳定的抽象层,而将相同的可变因素封装在相同的具体实现类中。

里氏代换原则(Liskov Substitution Principle)

  • 核心思想:所有引用基类(父类)的地方必须能透明地使用其子类的对象。即子类可以扩展父类的功能,但不能改变父类原有的功能。
  • 应用场景:在继承体系中,子类应当遵守基类定义的契约,保证基类与子类之间的兼容性。

接口隔离原则(Interface Segregation Principle)

  • 核心思想:客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。即接口应该尽量细化,使其只包含调用者需要的方法。
  • 应用场景:在设计接口时,应避免创建过于庞大、复杂的接口,而应该根据业务需求将接口拆分为多个更小的接口,让每个接口都保持一定的内聚性。

依赖倒转原则(Dependence Inversion Principle)

  • 核心思想:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节,细节应该依赖抽象。即要面向接口编程,而不是面向实现编程。
  • 应用场景:在系统设计时,应该尽量通过接口或抽象类来定义依赖关系,减少模块之间的直接依赖,提高系统的灵活性和可维护性。

迪米特法则,又称最少知道原则(Demeter Principle)

  • 核心思想:一个对象应该对其他对象有尽可能少的了解。即一个类应该尽量少地与其他类发生相互作用,降低类之间的耦合度。
  • 应用场景:在系统设计时,应该尽量减少类之间的直接依赖关系,而是通过中介类或者接口来传递消息或数据,以提高系统的灵活性和可维护性。

合成复用原则(Composite Reuse Principle)

  • 核心思想:尽量使用合成/聚合的方式,而不是使用继承。
  • 应用场景:在系统设计时,在新的对象里通过组合或聚合的方式使用已有的对象,以达到复用已有功能的目的,而不是通过继承。

设计模式类型

画板

优点

  1. 提高代码质量:设计模式是经过时间验证的、解决常见软件设计问题的最佳实践。通过应用这些模式,开发人员可以编写出更加清晰、可维护、可扩展的代码。设计模式提供了一种标准化的方式来表达设计意图,使得代码更加易于理解和重用。
  2. 促进团队协作:在团队开发中,不同的开发人员可能有着不同的编程习惯和风格。设计模式为团队成员提供了一个共同的语言和框架,使得他们能够更有效地沟通和协作。当团队成员都熟悉设计模式时,他们可以更容易地理解彼此的代码,减少误解和冲突。
  3. 提高开发效率:设计模式提供了一套现成的解决方案,用于解决软件开发中常见的问题。通过使用设计模式,开发人员可以避免重复造轮子,节省时间和精力。此外,设计模式还能够帮助开发人员更快地识别和解决问题,从而提高开发效率。
  4. 增强软件的可维护性:设计模式有助于将软件分解为独立的、可复用的组件。这些组件之间的耦合度低,易于替换和升级。当软件需要修改或扩展时,开发人员可以更加灵活地调整组件之间的关系,而不必对整个系统进行大规模的重构。
  5. 提升个人技能:学习设计模式不仅可以帮助开发人员编写出更高质量的代码,还可以提升他们的专业技能和竞争力。设计模式是软件开发领域中的重要知识点之一,掌握这些模式可以让开发人员更加深入地理解软件设计的本质和精髓。
  6. 适应变化:在快速变化的软件开发领域中,设计模式提供了一种灵活应对变化的方式。通过设计模式,开发人员可以设计出更加灵活、可扩展的软件系统,以应对不断变化的业务需求和技术挑战。

「撸一手好代码」设计模式之简介

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

FoolRabbit

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

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

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

打赏作者

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

抵扣说明:

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

余额充值