2025-09-28
C#
00

摘要

装饰模式的核心在于,它允许在不改变对象自身的基础上,在运行时向对象添加新的职责。这是通过创建一个包含原始对象的特殊包装对象(即装饰器)来实现的。装饰器类遵循与原始对象相同的接口,并在调用原始对象的方法之前或之后添加额外的行为。

正文

结构组成

装饰模式通常由以下几个角色组成:

  • 抽象组件 (Component):定义一个对象接口,可以给这些对象动态地添加职责。
  • 具体组件 (ConcreteComponent):定义了一个具体的对象,也可以给这个对象添加一些职责。
  • 装饰抽象类 (Decorator):实现了组件接口的同名接口,并持有一个组件实例的引用。这个类的任务是定义一个与组件接口一致的接口。
  • 具体装饰类 (ConcreteDecorator):具体实现装饰抽象类,其目的是给组件添加额外的职责。

优点

装饰模式的优点包括:

  • 增加对象的职责是灵活的。
  • 可以动态地添加或删除职责。
  • 可以用多个装饰类包装一个对象来组合几个行为。
  • 装饰模式是继承的一种替代模式,可以动态扩展一个实现类的功能。
2025-09-28
C#
00

摘要

桥接模式是一种结构型设计模式,它将抽象部分与其实现部分分离,使它们可以独立地变化。通过这种方式,桥接模式通过组合的方式建立两个独立变化的维度,一个维度为抽象层(Abstraction),另一个维度为实现层(Implementation),从而减少它们之间的耦合。

在传统的继承机制中,抽象和实现通常是通过继承关系来耦合的,这样的设计难以应对变化,因为一旦抽象部分需要更改,它的实现部分也必须更改,反之亦然。桥接模式通过引入一个抽象层来管理实现层的引用,从而使得抽象和实现可以独立地进行扩展。

正文

应用场景

桥接模式适用于以下场景:

  • 当你想要避免一个抽象有多个维度的实现时,例如不同的界面(UI)和不同的业务规则。
  • 当你需要在运行时切换不同的实现方式时。
  • 当一个类存在两个独立变化的维度,且这两个维度都需要进行扩展时。

优势与劣势

优势

  • 分离接口及其实现部分:提供了系统的灵活性,允许独立地管理抽象层和实现层。
  • 扩展性强:不论是抽象层还是实现层,都可以独立地进行扩展而不影响对方。
  • 符合开闭原则:可以独立地对抽象和实现进行扩展,而不是通过继承来增加功能,这符合开闭原则。
  • 隐藏实现细节:用户只与抽象层交互,不需要关心实现细节。
2025-09-28
C#
00

摘要

适配器模式是一种结构型设计模式,它允许不兼容的接口之间能够相互合作。这种模式涉及到一个单独的类,它负责加入独立的或不兼容的接口功能。简单来说,适配器模式就是一个中间件,它使得原本由于接口不兼容而不能一起工作的类可以一起工作。

正文

应用场景

适配器模式通常应用于以下情况:

  • 当你希望使用某个类,但是它的接口与其他代码不兼容时。
  • 当你想创建一个可重用的类,该类可以与未知的或未来的类(即那些接口可能不兼容的类)协同工作。
  • 当你需要使用几个现有的子类,但是子类化每个类以适配它们的接口会导致代码可复用性降低时。

优势

  • 提高类的复用性:通过适配器,可以使原本因接口不兼容而不能一起工作的类可以一起工作。
  • 增加了类的透明性和灵活性:隐藏了具体实现,用户只需要关注接口。
  • 系统的可扩展性较好:在实现新的适配器时,不必修改原有代码,符合开闭原则。

劣势

  • 过多的使用适配器会使系统非常凌乱:不仅会产生很多小类,而且在维护时可能会造成困难。
  • 不易于理解:尤其是涉及到多重适配时,适配器的引入可能会让系统的复杂性大大增加。
2025-09-28
C#
00

摘要

原型模式是一种创建型设计模式,它提供了一种在不指定具体类的情况下创建对象的方法。在软件设计中,创建对象是一项常见的任务,但有时我们需要创建许多具有相似属性和行为的对象,这时候就需要使用原型模式。

在原型模式中,我们使用一个现有对象的副本来创建新的对象。每次创建新对象时,我们只需要更新新对象的属性,而不需要重新创建整个对象。这种方法比传统的实例化方法更加高效,因为它可以减少内存占用和提高性能。

在C#中,原型模式通常通过实现ICloneable接口来实现。这个接口提供了一个Clone方法,可以创建一个对象的副本。当我们使用Clone方法创建一个对象的副本时,实际上是复制了原对象的引用,并将其存储在新的对象中。这意味着新对象和原对象具有相同的属性和方法。

使用原型模式可以大大简化对象的创建过程。我们可以创建一个Prototype类来实现这个模式。这个类通常包含一个Clone方法和一些用于操作对象的方法。当我们需要创建一个新对象时,只需要调用Clone方法,并将结果存储在新对象中即可。

正文

原型模式是什么?

原型模式的主要思想是通过复制现有的对象实例来创建新的对象实例,而不是通过新建类的实例来创建。这种模式在处理大量相同或相似对象创建时非常有用,因为它可以避免创建新的实例所需的初始化和配置时间。

2025-09-28
C#
00

摘要

工厂方法模式是一种创建型设计模式,它提供了一种方式来封装对象的实例化过程。在工厂方法模式中,我们通过创建一个接口或抽象类来创建对象,然后让子类决定实例化哪一个类。

正文

工厂方法模式定义

工厂方法模式,定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。

应用场景

工厂方法模式主要应用在以下几个场景:

  1. 当一个类不知道它所必须创建的对象的类的时候。
  2. 当一个类希望由它的子类来指定它所创建的对象的时候。
  3. 当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候。

优势与劣势

优势

  1. 你可以避免创建者和具体产品之间的紧密耦合。
  2. 单一职责原则。你可以将产品创建代码放在程序的单一位置,使得代码更易于维护。
  3. 开闭原则。你可以引入新的产品类型到程序中,而无需破坏现有的客户端代码。

劣势

  1. 由于代码使用了大量的新的类和接口,所以代码可能会变得更复杂。

示例

假设我们有一个日志记录器,它可以记录日志到不同的地方,比如文件或数据库。我们可以使用工厂方法模式来创建不同类型的日志记录器。