前言
在软件开发中,经过前辈们不断的试错,终是对软件系统的设计和开发总结了一些原则和模式, 不管用什么语言做开发,都将对我们系统设计和开发提供指导意义。
一、设计模式是什么?
设计模式(Design Pattern)是软件工程中常用的解决特定问题的一系列最佳实践,是前辈们对软件开发和设计中总结的经验教训,融合后的产物,是软件开发人员在软件开发过程中⾯面临的一般问题的解决方案。这些设计模式经历了时间的考验,被大家广泛认可。
二、学习设计模式有什么好处?
学习设计模式带来的好处有以下几点:
- 公司项目需要重构,但是不不知道如何下手,做到高内聚低耦合。
- 为了提升自己实力,更好的理解框架源码设计思想,封装中间件。
- 为了面试应对面试官的各种刁难。
- 为了看懂 高手写的代码。
- 提升编码水平,能够提高功能编码的重用、可读、可靠、可维护、可拓展性。
三、设计模式的划分
设计模式分为:创建型模式,结构型模式,行为型模式三种。详细划分如下图:
四、设计原则
设计模式是站在设计原则的基础之上的,所以在学习设计模式之前,有必要对这些设计原则先做一下了解。
软件设计开发原则的目的是为了提高代码的重用性,可扩展性,可读性。诞生出了很多软件设计的原则,可分为六大设计原则,将六大原则的英文首字母拼在一起就是SOLID(稳定的),所以也称之为SOLID原则。
- 单一职责原则 (Single Responsibility Principle, SRP):一个类只负责一个功能领域中的相应职责,就一个类而言,应该只有一个引起它变化的原因。是实现高内聚、低耦合的指导方针。
- 开放-封闭原则 (Open-Closed Principle, OCP):对扩展开放,对修改关闭,在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。
- 里氏替换原则 (Liskov Substitution Principle, LSP):任何基类可以出现的地方,子类一定可以出现。在程序中尽量使用基类型来对象进行定义,而在运行时再确定其子类类型,用子类对象来替换父类对象。
- 依赖倒置原则 (Dependency Inversion Principle, DIP):是开闭原则的基础,针对接口编程,依赖于抽象而不依赖于具体。高层模块不应该依赖低层模块,二者都应该依赖其抽象。
- 接口隔离原则 (Interface Segregation Principle, ISP):客户端不应该依赖那些它不需要的接⼝,使用多个隔离的接口,比使用单个接口要好,降低类之间的耦合度。
- 迪米特法则 (Demeter’s Law, LoD):最少知道原则,一个实体应当尽量少地与其他实体之间发生相互作用,使得系统功能模块相对独⽴,类之间的耦合度越低,就越有利利于复用,一个处在松耦合中的类一旦被修改,不会对关联的类造成太大波及,通过引入一个合理的第三者来降低现有对象之间的耦合度。
这些原则共同构成了面向对象设计的理论基础,它们帮助开发者创建出结构清晰、易于理解和维护的代码。设计模式是这些原则在特定上下下的应用,提供了解决常见问题的模板和最佳实践。