第1课设计模式_基本介绍
热度🔥:57 免费课程
授课语音
设计模式概述
1. 介绍
设计模式(Design Pattern)是一套经过分类、被反复使用的代码设计经验的总结。它源于建筑领域,由哈佛大学建筑学博士克里斯托弗·亚历山大提出,后被引入到软件工程,特别是面向对象的设计中。
2. 设计模式的必要性
设计模式的产生旨在解决软件开发中反复出现的设计问题,提供标准化的解决方案,具体目的包括:
- 重用代码:避免重复设计和实现。
- 提高代码质量:减少系统中的错误和问题。
- 促进沟通:提供共享的设计词汇和概念,提升开发人员间的理解与沟通。
3. 基本原则
设计模式遵循以下基本原则:
3.1 单一职责原则(SRP)
- 定义:一个类只负责一项职责,降低复杂度,提高可读性和可维护性。
- 实现方法:将不同职责分离到不同类中。
3.2 开闭原则(OCP)
- 定义:对扩展开放,对修改关闭,提升系统的可扩展性和可维护性。
- 实现方法:通过接口或抽象类定义稳定的抽象层。
3.3 里氏替换原则(LSP)
- 定义:子类对象应能替换父类对象,确保程序行为不变。
- 实现方法:子类实现父类所有方法,不改变其预期行为。
3.4 依赖倒置原则(DIP)
- 定义:高层模块不应依赖低层模块,二者应依赖于抽象。
- 实现方法:通过依赖注入和接口编程实现。
3.5 接口隔离原则(ISP)
- 定义:使用多个专门的接口而非一个通用的大接口,降低耦合度。
- 实现方法:将大接口拆分为多个小接口。
3.6 迪米特法则(LoD)
- 定义:对象应对其他对象有最少的了解,降低系统耦合度。
- 实现方法:减少对象之间的直接交互,仅与相关对象通信。
4. 设计模式的分类
设计模式可分为三大类:
4.1 创建型模式(Creational Patterns)
- 单例模式(Singleton Pattern):确保一个类只有一个实例,并提供全局访问点。
- 工厂方法模式(Factory Method Pattern):定义创建对象的接口,让子类决定实例化哪一类。
- 抽象工厂模式(Abstract Factory Pattern):提供创建一系列相关对象的接口。
- 建造者模式(Builder Pattern):将复杂对象的构建与其表示分离。
- 原型模式(Prototype Pattern):通过拷贝原型创建新的对象。
4.2 结构型模式(Structural Patterns)
- 适配器模式(Adapter Pattern):将一个类的接口转换成客户期望的接口。
- 装饰模式(Decorator Pattern):动态给对象增加额外职责。
- 代理模式(Proxy Pattern):为其他对象提供代理,以控制访问。
- 外观模式(Facade Pattern):为子系统提供一致的接口。
- 桥接模式(Bridge Pattern):将抽象部分与实现部分分离。
- 组合模式(Composite Pattern):将对象组合成树形结构表示部分-整体层次。
- 享元模式(Flyweight Pattern):通过共享技术支持大量细粒度对象。
4.3 行为型模式(Behavioral Patterns)
- 策略模式(Strategy Pattern):定义一系列算法并封装,使其可互相替换。
- 模板方法模式(Template Method Pattern):定义算法的骨架,将某些步骤延迟到子类。
- 观察者模式(Observer Pattern):定义一对多依赖关系,当一个对象改变状态时通知所有依赖对象。
- 迭代器模式(Iterator Pattern):顺序访问聚合对象的各个元素。
- 责任链模式(Chain of Responsibility Pattern):多个对象都有机会处理请求,减少耦合。
- 命令模式(Command Pattern):将请求封装为对象,允许用不同请求对客户进行参数化。
- 备忘录模式(Memento Pattern):捕获对象的内部状态并保存。
- 状态模式(State Pattern):允许对象在内部状态改变时改变其行为。
- 访问者模式(Visitor Pattern):定义作用于对象结构的操作,新增操作而不改变类。
- 中介者模式(Mediator Pattern):用中介对象封装一系列对象的交互。
- 解释器模式(Interpreter Pattern):定义语言的文法表示并提供解释器。