C# 生成器模式:逐步构造对象

作者:微信公众号:【架构师老卢】
2-18 19:28
19

概述:介绍构建器模式是一种独特的设计模式,主要用于对象构造。特别是在需要用多个零件构造对象的情况下,构建器模式会大放异彩。本文深入探讨了 C# 生成器模式,从其基础知识到更高级的应用程序。第 1 部分:基础知识什么是构建器模式?在对象由多个部分构造或具有许多可选配置的情况下,初始化它可能会变得棘手。构建器模式旨在通过以下方式解决此问题:将复杂对象的构造与其表示形式分开。允许创建不同的表示形式。为什么要使用 Builder 模式?参数重载:有助于避免构造函数中的参数列表很长。不可变性:可用于构建不可变对象。可读性:提供清晰易读的对象创建。第 2 部分:简单实现下面是了解构建器模式的基本示例:想象一下,

介绍

构建器模式是一种独特的设计模式,主要用于对象构造。特别是在需要用多个零件构造对象的情况下,构建器模式会大放异彩。本文深入探讨了 C# 生成器模式,从其基础知识到更高级的应用程序。

第 1 部分:基础知识

什么是构建器模式?

在对象由多个部分构造或具有许多可选配置的情况下,初始化它可能会变得棘手。构建器模式旨在通过以下方式解决此问题:

  • 将复杂对象的构造与其表示形式分开。
  • 允许创建不同的表示形式。

为什么要使用 Builder 模式?

  1. 参数重载:有助于避免构造函数中的参数列表很长。
  2. 不可变性:可用于构建不可变对象。
  3. 可读性:提供清晰易读的对象创建。

第 2 部分:简单实现

下面是了解构建器模式的基本示例:

想象一下,使用 CPU、RAM 和硬盘等组件构建一个。Computer

public class Computer  
{  
    public string CPU { get; set; }  
    public string RAM { get; set; }  
    public string HardDisk { get; set; }  
}  
  
public class ComputerBuilder  
{  
    private Computer _computer = new Computer();  
    public ComputerBuilder AddCPU(string cpu)  
    {  
        _computer.CPU = cpu;  
        return this;  
    }  
    public ComputerBuilder AddRAM(string ram)  
    {  
        _computer.RAM = ram;  
        return this;  
    }  
    public ComputerBuilder AddHardDisk(string hardDisk)  
    {  
        _computer.HardDisk = hardDisk;  
        return this;  
    }  
    public Computer Build()  
    {  
        return _computer;  
    }  
}

用法:

var computer = new ComputerBuilder()  
                .AddCPU("Intel i7")  
                .AddRAM("16GB")  
                .AddHardDisk("512GB SSD")  
                .Build();

第 3 部分:高级概念

流畅的界面

上面的示例采用了 Fluent 接口,允许方法链接使客户端代码更具可读性。

导演

Builder Pattern 可以使用强制执行构建步骤的“Director”类进行扩展:

public class ComputerDirector  
{  
    public Computer Construct(ComputerBuilder builder)  
    {  
        return builder.AddCPU("Intel i7")  
                      .AddRAM("16GB")  
                      .AddHardDisk("1TB HDD")  
                      .Build();  
    }  
}

用法:

var director = new ComputerDirector();  
var builder = new ComputerBuilder();  
var computer = director.Construct(builder);

不可变的构建器

可以使用构建器来创建不可变对象:

public class ImmutableComputer  
{  
    public string CPU { get; }  
    public string RAM { get; }  
    public string HardDisk { get; }  
  
    public ImmutableComputer(ComputerBuilder builder)  
    {  
        CPU = builder.Computer.CPU;  
        RAM = builder.Computer.RAM;  
        HardDisk = builder.Computer.HardDisk;  
    }  
}

第 4 部分:构建器与工厂模式

虽然这两种模式都处理对象创建:

  • 构建器模式:逐步构建复杂对象。
  • 工厂模式:创建对象,但不指定要实例化的确切类。

第 5 部分:实际应用

  1. GUI 库:创建具有各种属性的复杂 UI 组件。
  2. 配置管理:使用多个选项构建配置
  3. 文档转换器:构造复杂的文档表示形式。

结论

C# 中的生成器模式是用于构造复杂对象的可靠而灵活的解决方案。它增强了代码的可读性,允许流畅地创建对象,并且可以与其他模式结合使用,以实现更高级的方案。无论您是构建软件组件还是物理产品,了解构建器模式都可以大大简化您的对象构建过程。

相关留言评论
昵称:
邮箱:
阅读排行