设计模式的起源和目的
设计模式的概念最初是由著名的软件工程师恩格尔·费舍尔(Erich Gamma)、比尔·拜尔斯(Bill Bates)、约翰·伯格(John M. Vlissides)和罗伯特·C. 马丁(Robert C. Martin)在他们的著作《设计模式:可复用面向对象软件的基础》(Design Patterns: Elements of Reusable Object-Oriented Software)中提出。这本书被称为“四人帮”(Gang of Four)的著作,在软件开发领域内产生了巨大的影响。
设计模式的目的是为软件工程师提供一种可重用的解决方案,以解决在软件开发过程中常见的问题。设计模式可以帮助软件工程师提高开发效率,提高代码质量,减少软件开发的复杂度。设计模式也是软件工程师之间交流和沟通的重要工具,可以使团队成员之间的沟通和理解更加流畅。
设计模式的六大原则
单一职责原则(Single Responsibility Principle)
一个类应该只有一个引起它变化的原因。这意味着一个类应该只有一个职责,只负责一项功能。这样可以使类更小、更简单,更容易维护。开闭原则(Open-Closed Principle)
软件实体(类、模块、函数)应该对扩展开放,对修改封闭。也就是说,应该尽量在不修改代码的情况下进行扩展。这样可以保证软件的可扩展性和可维护性。里氏代换原则(Liskov Substitution Principle)
子类必须能够替换掉它们的基类,而且在程序执行期间不应出现任何异常。也就是说,在设计继承体系时,应该保证基类的行为在子类中仍然适用。接口隔离原则(Interface Segregation Principle)
客户端不应该依赖它不需要的接口,即一个接口不应该强迫客户端实现它不用的方法。这样可以降低类之间的耦合度,提高系统的可维护性。依赖倒置原则(Dependency Inversion Principle)
抽象不应该依赖于细节,细节应该依赖于抽象。也就是说,高层模块不应该依赖低层模块,两者都应该依赖于抽象。这样可以降低系统的耦合度,提高系统的灵活性和可维护性。合成复用原则(Composite Reuse Principle)
尽量使用合成/聚合的方式,而不是使用继承。这样可以降低类之间的耦合度,提高系统的灵活性和可维护性。