前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >重温设计模式 --- 建造者模式

重温设计模式 --- 建造者模式

作者头像
Niuery Diary
发布2023-10-22 16:37:24
1370
发布2023-10-22 16:37:24
举报

引言

建造者模式是一种创建型设计模式,它可以将一个复杂对象的构建过程和表示分离,使得相同的构建过程可以创建不同的表示,以及不同的构建过程可以创建相同的表示

在实际的开发中,我们有时需要创建一些复杂的对象,例如包含多个组件和属性的对象,这时候如果直接在代码中创建对象,代码的可读性和可维护性都会降低。而使用建造者模式可以将对象的创建过程封装在一个建造者类中,使得代码更加清晰和易于维护。

下面我们使用C#语言来实现建造者模式。我们以创建一台电脑为例,电脑包含CPU、内存、硬盘等组件。

组件类

首先我们需要定义电脑的组件类:

代码语言:javascript
复制
public  class  CPU
{
    public  string Type { get; set; }
}

public  class  Memory
{
    public  int Size { get; set; }
}

public  class  HardDisk
{
    public  int Capacity { get; set; }
}

复杂目标类

定义一个电脑类,该类包含CPU、内存、硬盘等组件:

代码语言:javascript
复制
public  class  Computer
{
    public CPU CPU { get; set; }
    
    public Memory Memory { get; set; }
    
    public HardDisk HardDisk { get; set; }
}

建造者类

定义一个建造者类,该类用于创建电脑对象:

代码语言:javascript
复制
public  class  ComputerBuilder
{
    private Computer _computer = new Computer();

    public ComputerBuilder SetCPU(string type)
    {
        _computer.CPU = new CPU { Type = type };
        return this;
    }

    public ComputerBuilder SetMemory(int size)
    {
        _computer.Memory = new Memory { Size = size };
        return this;
    }

    public ComputerBuilder SetHardDisk(int capacity)
    {
        _computer.HardDisk = new HardDisk { Capacity = capacity };
        return this;
    }

    public Computer Build()
    {
        return _computer;
    }
}

在建造者类中,我们定义了SetCPU、SetMemory、SetHardDisk等方法用于设置电脑的各个组件,并且在Build方法中返回最终创建的电脑对象。

最后我们可以使用建造者类创建电脑对象:

代码语言:javascript
复制
var computerBuilder = new ComputerBuilder();

var computer = computerBuilder
    .SetCPU("Intel Core i7")
    .SetMemory(16)
    .SetHardDisk(512)
    .Build();

总结

通过使用建造者模式,我们将电脑的创建过程封装在了建造者类中,使得代码更加清晰和易于维护。同时,我们可以通过设置不同的组件来创建不同的电脑对象,使得代码具有更好的可扩展性和复用性。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-04-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Niuery Diary 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 引言
    • 组件类
      • 复杂目标类
        • 建造者类
        • 总结
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档