设计模式的目标
设计模式是一种解决问题的思路,提供一种通用的、可重用的解决方案。
设计模式的主要目标包括:
-
提高代码的可重用性: 设计模式可以使开发人员将经过验证的设计思想和方法应用于新的问题,从而提高代码的可重用性。
-
提高代码的可维护性: 设计模式能够提供一种清晰的结构,使得代码更易于理解和维护。
-
降低代码的耦合性: 设计模式通过定义良好的接口和抽象类,有助于降低代码组件之间的依赖关系,减少耦合性。
-
提高代码的可扩展性: 设计模式通过强调松散耦合,使得系统更容易扩展和修改。
设计模式的原则
设计模式的六大原则如下:
- 单一职责原则:一个类应该只有一个引起变化的原因。定义清楚的边界,如果一个类承担了过多的职责,一旦发生变化可能会影响其他功能,因此需要将职责进行分离。
- 开放封闭原则:软件实体应当对扩展开放,对修改封闭。这意味着一个实体允许在不修改原有代码的情况下进行扩展。
- 里氏替换原则:这个原则表达了子类型应当是其基类型的可替换的。也就是说,程序中的对象应能够被其子类所替换,而不改变程序的正确性。
- 依赖倒转原则:高层模块不应该依赖于低层模块,两者都应该依赖于抽象;抽象不应该依赖于细节,细节应该依赖于抽象。这表明在设计中要依赖于抽象而不是具体的实现。
- 接口隔离原则:客户端不应该强制依赖它不需要的接口,即一个类对另一个类的依赖应该建立在最小的接口上。
- 迪米特法则:又叫“最少知道法则”,一个对象应当尽可能少的了解另外的对象。这样降低了类之间的耦合度,增强了代码的可维护性和可复用性。
常用设计模式
设计模式的三大类型:
- 创建型模式:主要解决对象的创建问题,,它们提供了一种在创建对象的同时隐藏创建逻辑的方法,使得程序更加灵活,能够根据不同情况创建不同的对象。
- 单例模式(Singleton Pattern):确保一个类只有一个实例,并提供一个全局访问点。
- 工厂模式(Factory Pattern):定义一个创建对象的接口,但由子类决定实例化哪个类。
- 抽象工厂模式(Abstract Factory Pattern):提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
- 建造者模式(Builder Pattern):将一个复杂对象的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。
- 原型模式(Prototype Pattern):通过复制现有对象来创建新对象,而不是通过实例化。
- 结构型模式:关注如何组合类或对象,以形成更大的结构。它们通过组合简化了系统的复杂性,使得系统更易于理解和维护。
- 代理模式:用于为其他对象提供一种代理以控制对这个对象的访问
- 行为型模式:专注于对象之间的通信和协作,它们描述了对象之间如何相互协作完成单个对象无法单独完成的任务,以及如何分配职责和算法。
- 观察者模式(Observer Pattern):定义对象间的一对多依赖,当一个对象状态改变时,所有依赖它的对象都得到通知并被自动更新。
- 责任链模式(Chain of Responsibility Pattern):使多个对象都有机会处理请求,从而避免了请求的发送者和接收者之间的耦合关系。
- 策略模式:定义一系列算法,将每个算法封装起来,并使它们可以互换。