原型模式(Prototype Pattern)是一种创建型设计模式,它允许通过复制现有的对象来创建新对象,而不是从头开始创建。这种模式适用于创建对象的成本较高,或者创建过程复杂的场景。在原型模式中,有一个原型对象,其他对象可以通过克隆这个原型对象来创建。
原型模式的常用应用场景
对象创建成本高:如数据库连接、网络连接等对象的创建,克隆已有对象比重新创建更高效。
避免重复初始化:当对象的初...
状态模式(State Pattern)属于行为设计模式,其核心在于允许对象在内部状态发生改变时变更自身的行为,仿佛对象更改了所属的类。该模式将状态相关的行为封装在不同的状态类中,并且让对象在运行时可以动态切换状态。
状态模式的构成
上下文(Context):它持有一个状态对象的引用,定义了客户端感兴趣的接口,并且负责状态的切换。
抽象状态(State):定义了一个所有具体状态类都要实现的...
观察者模式(Observer Pattern)又被称为发布-订阅模式(Publish-Subscribe Pattern),是一种行为设计模式,它定义了对象间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖它的对象都会得到通知并自动更新。在这个模式里,被观察的对象称为主题(Subject),依赖于主题的对象称为观察者(Observer)
观察者模式的主要构成1. 抽象主题(Subj...
建造者模式(Builder Pattern)是一种创建型设计模式,它将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。该模式允许你逐步构建一个复杂对象,通过使用多个简单的步骤来创建最终对象,而不是一次性构建整个对象。
建造者模式的构成
产品(Product):要构建的复杂对象。
抽象建造者(Abstract Builder):定义了构建产品各个部分的抽象接口。
具体建...
外观模式(Facade Pattern)属于结构型设计模式,它为子系统中的一组接口提供了一个统一的高层接口,使得子系统更容易使用。此模式通过创建一个外观类,将复杂的子系统封装起来,客户端只需与外观类交互,而无需了解子系统内部的具体实现。
外观模式的结构
外观角色(Facade):这是外观模式的核心,它了解各个子系统的功能和职责,负责将客户端的请求委派给相应的子系统进行处理。外观角色通常会...
模板模式(Template Pattern)是一种行为设计模式,它定义了一个算法的骨架,将一些步骤的实现延迟到子类中。这样,在不改变算法结构的前提下,子类可以重新定义算法中的某些步骤。模板模式通过抽象类和具体子类的协作,实现了代码的复用和扩展。
模板模式的结构
抽象类(Abstract Class):定义了算法的骨架,包含了一系列抽象方法和具体方法。抽象方法由子类实现,具体方法则提供了算...
代理模式(Proxy Pattern)是一种结构型设计模式,它允许通过代理对象来控制对另一个对象(即目标对象)的访问。代理对象在客户端和目标对象之间起到中介的作用,客户端与目标对象之间的交互都通过代理对象来完成。代理模式可以在不改变目标对象的情况下,对目标对象的功能进行增强或控制访问。
代理模式的结构
抽象主题(Subject):定义了目标对象和代理对象的共同接口,客户端通过这个接口来调...
装饰模式(Decorator Pattern)属于结构型设计模式,它允许向一个现有的对象添加新的功能,同时又不改变其结构。这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。装饰模式以对客户端透明的方式动态地给一个对象附加上更多的责任,就像给一个对象 “穿衣服” 一样,可以根据需要一层一层地添加装饰。
装饰模式的结构
抽象组件(Componen...
工厂模式(Factory Pattern)是一种创建型设计模式,其核心思想是将对象的创建逻辑与使用逻辑解耦,通过一个工厂类统一负责对象的实例化。它通过定义一个创建对象的接口,让子类决定实例化哪个类,从而降低客户端与具体产品的耦合度。
结构组成
抽象产品(Product):定义产品的公共接口或抽象类,声明产品的核心方法。
具体产品(Concrete Product):实现抽象产品接口,提供...
单例模式(Singleton Pattern)是一种创建型设计模式,它确保一个类只有一个实例,并提供一个全局访问点来获取这个实例。这意味着无论在应用程序的哪个地方调用该类,都会返回同一个实例对象,而不是创建新的对象。
单例模式的实现步骤
私有构造函数:防止类外部使用 new 关键字创建新的实例。
私有静态变量:用于存储类的唯一实例。
公共静态方法:提供全局访问点,用于获取类的唯一实例。
...