
书:pan.baidu.com/s/1IQNZ5I33ZjHCwpHVt-00ig?pwd=jrr9
一、设计模式的核心思想
- “变”与“不变”的分离:设计模式主要研究的是如何将软件系统中的“变”与“不变”部分进行分离、解耦和组装,以提高软件的兼容性和可扩展性。
- 抽象化与多态化:通过抽象化和多态化的方式,可以增强软件的灵活性和可维护性。
二、创建型设计模式的关键技术
- 单例模式(Singleton):确保一个类仅有一个实例,并提供一个全局访问点。关键技术在于将构造方法私有化,并通过一个静态方法提供实例的访问。
- 原型模式(Prototype):用原型实例指定创建对象的种类,并通过拷贝这些原型来创建新的对象。关键技术在于实现一个克隆方法,以便快速生成与原型对象相同的实例。
- 工厂方法模式(Factory Method):定义一个创建对象的接口,让子类决定实例化哪一个类。关键技术在于将对象的创建过程封装在接口中,并由子类来实现具体的创建逻辑。
- 抽象工厂模式(Abstract Factory):提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们的具体类。关键技术在于定义一个产品族的抽象接口,并由具体工厂来实现这些接口。
- 建造者模式(Builder):将一个复杂对象的构建过程与其表示相分离,使得同样的构建过程可以创建不同的表示。关键技术在于定义一个建造者接口,并通过具体的建造者类来实现构建逻辑。
三、结构型设计模式的关键技术
- 外观模式(Facade):为子系统中的一组接口提供一个一致的界面,使得这一子系统更加容易使用。关键技术在于封装多个子系统,并提供一个统一的访问接口。
- 组合模式(Composite):将对象组合成树形结构以表示“部分-整体”的层次结构。关键技术在于定义一个统一的接口来表示部分和整体,并通过递归的方式来实现组合逻辑。
- 装饰器模式(Decorator):动态地给一个对象添加一些额外的职责。关键技术在于定义一个装饰器接口,并通过具体的装饰器类来实现额外的职责。
- 适配器模式(Adapter):将一个类的接口转换成客户希望的另外一个接口。关键技术在于定义一个适配器类,该类实现了目标接口,并持有一个被适配对象的引用。
- 享元模式(Flyweight):运用共享技术有效地支持大量细粒度对象的复用。关键技术在于将对象的内部状态与外部状态分离,并只存储内部状态,从而实现对象的共享。
- 代理模式(Proxy):为其他对象提供一种代理以控制对这个对象的访问。关键技术在于定义一个代理接口,并通过具体的代理类来实现对目标对象的访问控制。
四、行为型设计模式的关键技术
- 模板方法模式(Template Method):定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。关键技术在于定义一个模板方法,并在其中调用一系列抽象方法或钩子方法。
- 策略模式(Strategy):定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。关键技术在于定义一个策略接口,并由具体的策略类来实现不同的算法。
- 状态模式(State):允许对象在内部状态改变时改变它的行为。关键技术在于定义一个状态接口,并由具体的状态类来实现不同的行为。
- 观察者模式(Observer):定义对象间的一种一对多的依赖关系,当一个对象改变状态时,其所有依赖者都会收到通知并自动更新。关键技术在于定义一个观察者接口和一个被观察者类,并通过注册和通知机制来实现依赖关系。
- 中介者模式(Mediator):用一个中介对象来封装一系列的对象交互。关键技术在于定义一个中介者接口和一个具体的中介者类,并通过中介者来协调各个对象之间的交互。
- 命令模式(Command):将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化、对请求排队或记录请求日志,以及支持可撤销的操作。关键技术在于定义一个命令接口和一个具体的命令类,并通过命令对象来封装请求和执行逻辑。
虽然《秒懂设计模式(2021版)》并未明确指出16个关键技术,但从上述归纳中可以看出,设计模式涵盖了创建型、结构型和行为型三大类,每一类都有其独特的关键技术和思想。这些技术和思想对于提高软件的可维护性、可扩展性和灵活性具有重要意义。