设计模式是一种被广泛应用于面向对象编程的设计思想,可以帮助解决软件开发中的一些通用问题。在这个过程中,设计模式的设计原则是指,遵循一些通用的设计准则,以确保我们能够创建出良好的设计,使我们的代码能够具有良好的可维护性、可读性、可扩展性和可重用性。

设计模式类型

创建型、结构型和行为型。

创建型

创建型模式是一类关注于对象的创建过程的设计模式。
它们关心对象的创建和实例化的方式,用于封装对象(或类)的创建过程,而不是关注它们的具体实现。使用创建型模式可以提高代码的重用性,降低系统的耦合度,同时也可以让代码更加灵活、易于扩展。
主要处理对象的创建,帮助我们在系统中创建对象。

创建型模式包括以下几种类型:
单例模式、工厂方法模式、抽象工厂模式、建造者模式和原型模式。

结构型

结构型模式是一种关注对象之间静态组合的设计模式。
通常将多个类或者对象组合在一起以形成更大的、更复杂的结构,从而实现特定的功能。使用结构型模式可以让系统更加灵活、易于扩展,同时也可以降低系统的耦合度和复杂度。
通常用于解决类或者对象的组合问题。

结构型模式包括以下几种类型:
适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式和代理模式。

行为型

行为型模式是一种关注类和对象之间动态交互的设计模式。
行为型模式关注的是对象之间的相互作用(通信、控制等),以及如何使得这些对象之间更加高效地协同工作。使用行为型模式可以使得系统更加清晰、可读性更高,并且降低了系统的耦合度。
通常用于解决类或对象间的通信和控制问题。

行为型模式包括以下几种类型:
模板方法模式、策略模式、命令模式、责任链模式、状态模式、观察者模式、中介者模式、迭代器模式和访问者模式。

设计模式原则

  1. 单一责任原则(Single Responsibility Principle,SRP):一个类只负责一项职责,类的职责应该单一,这样可以使类更加简洁、清晰,并且容易扩展,有助于提高类的可复用性、可读性和可维护性。如果有多个职责,应该考虑将其分解为多个类。

  2. 开闭原则(Open Closed Principle,OCP): 一个软件实体(类、模块、函数等)应当对扩展开放,对修改关闭,避免在修改原有代码时引入新的错误和风险。这个原则主要是用来指导类和模块的设计,通过抽象出稳定的接口和实现,来保证系统的可扩展性。这意味着应该通过添加新功能来扩展一个系统,而不是通过修改现有代码来实现。

  3. 里氏替换原则(Liskov Substitution Principle,LSP):子类可替换父类并保持程序的正确性和稳定性。这个原则是继承关系中最重要的原则之一,它指导我们如何设计父类和子类的关系,让父类的所有特性也适用于子类。这意味着在使用继承时应该注意子类的行为是否与其父类一致。

  4. 依赖倒置原则(Dependency Inversion Principle,DIP):高层模块不应该依赖底层模块,它们应该都依赖于抽象。依赖于抽象而不是具体实现,这意味着应该依赖于抽象类或接口而不是具体实现,使系统更加灵活,容易维护和修改。这个原则主要是用于指导类和模块的依赖关系设计,通过抽象出稳定的接口和实现,来保证系统的松耦合性。

  5. 接口隔离原则(Interface Segregation Principle,ISP):客户端不应该依赖它不需要的接口,类间的依赖关系应该建立在最小接口上。这个原则是用于指导类和接口的设计,通过拆分大而全的接口为小而专的接口,来避免不必要的依赖关系。

  6. 迪米特法则(Law of Demeter,LoD):一个对象应该对其他对象有最小的了解。这个原则主要是用于指导类之间的依赖关系,一个类尽量少的与其他类发生联系,即减少对象之间的耦合,可以提高模块的可重用性和可维护性,使系统更加灵活、易于扩展和维护。

  7. 合成/聚合复用原则(CARP):通过组合多个类的方式来复用代码,而不是继承关系来复用代码,避免继承的缺陷和风险,使系统更加灵活、复用性更高。

04-25 12:31