组合模式是一种结构型设计模式,它将对象组合成树形结构来表示“整体-部分”的层次关系,使得用户对单个对象和组合对象的访问具有一致性。组合模式由以下几个角色组成:组件(Component):组合中的所有对象都要实现的接口或抽象类,用于定义公共行为并管理所有子组件。叶子(Leaf):组合中的叶子节点,它不包含任何子组件。容器(Composite):组合中的容器节点,它包含一个或多个子组件,子组件可...
状态模式是一种行为型设计模式,它可以根据一个对象的内在状态来改变它的行为。该模式将对象的状态封装成不同的类,每个状态都会实现该对象的一个公共接口,并在发生状态转换时更改对象所维护的状态类。这种模式主要由以下几个角色组成:上下文(Context):它是状态模式中的主要角色,包含一些内部状态,用于管理不同状态的对象。上下文可以将状态转换委托给状态类来进行处理。抽象状态(State):它是所有具体...
命令模式是一种行为型设计模式。它将请求的发送者和接收者解耦,并且支持撤销和恢复操作。在命令模式中,请求被封装成一个命令对象,并在命令对象中封装了执行命令所需要的必要信息,如被调用的方法、方法参数等。命令模式中通常有四个主要角色:请求者(Invoker):请求发送者,负责发送命令请求。命令接口(Command):定义命令的接口。具体命令(Concrete Command):实现命令接口,保存命...
模板方法模式是一种行为型设计模式。它定义了一个操作中的算法框架,将某些步骤放在子类中实现。这样可以让子类在不改变算法框架的情况下,重新定义算法中的某些步骤。模板方法模式中通常有两个主要角色:抽象类(Abstract Class):定义了算法中的关键步骤,其中某些步骤由子类实现。具体子类(Concrete Class):实现了抽象类定义的某些步骤。使用模板方法模式的一个典型场景是在多个类中实现...
策略模式是一种行为型设计模式。它允许在运行时选择算法的行为,使算法的行为可以独立于调用它的上下文而变化。策略模式中通常有三个主要角色:环境(Context):维护一个对策略的引用,调用所选策略的方法。策略接口(Strategy):定义一个通用的算法接口。策略具体实现(Concrete Strategy):实现算法接口,提供具体的算法实现。策略模式的核心思想是将算法的实现与其调用分离。由于不同...
适配器模式是一种结构型设计模式。它的主要目的是将一种接口转换成客户希望的另一种接口表示。适配器使原本由于接口不兼容而无法工作的类能够一起工作。适配器模式中通常有三个主要角色:目标接口(Target):客户端所希望的接口。源接口(Adaptee):需要被适配的接口。适配器(Adapter):将源接口转换成目标接口的类。适配器模式可以使用两种不同的实现方法:类适配器:使用继承来适配接口,即适配器...
观察者模式是一种行为设计模式,它定义了一种对象之间的一对多依赖关系,以便当一个对象的状态发生改变时可以自动通知其他依赖于此对象状态的对象并进行相应的更新操作。在观察者模式中,通常会有两个主要的角色:Subject(被观察者)和Observer(观察者)。Subject 可以被多个 Observer 对象所依赖,当它的状态发生改变时,它会通知所有注册为它的观察者对象,以便观察者们可以及时地更新...
工厂模式是一种创建型设计模式,其目的是为了创建对象而不需要暴露对象的创建逻辑。在工厂模式中,我们定义一个工厂类,该类负责创建其它类对象,同时客户端代码只需要调用工厂类的方法即可创建对象,而不需要了解对象的具体实现细节。这样可以避免客户端代码和具体实现之间的紧耦合。工厂模式通常分为三种类型:简单工厂模式、工厂方法模式和抽象工厂模式。简单工厂模式:简单工厂模式又叫静态工厂模式,是最简单的工厂模式...