首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >设计模式--建造者模式

设计模式--建造者模式

原创
作者头像
软件架构师Michael
发布2023-06-19 12:00:49
发布2023-06-19 12:00:49
26700
代码可运行
举报
运行总次数:0
代码可运行

建造者模式是一种对象创建型模式,它将复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。它适用于构建复杂对象的场景,可以很好地解决“不同的对象需要复杂的组装过程”的问题。通过建造者模式,我们可以将对象的创建和表示分离,使得程序的扩展性和可维护性都得到了提高。

下面是一个使用C#编写的建造者模式实例,该实例演示了如何使用建造者模式创建一辆汽车:

代码语言:javascript
代码运行次数:0
运行
复制
// 汽车类,表示我们要构建的复杂对象
class Car
{
    private string engine;
    private string body;
    private string wheel;
    private string other;

    public void SetEngine(string e) { engine = e; }
    public void SetBody(string b) { body = b; }
    public void SetWheel(string w) { wheel = w; }
    public void SetOther(string o) { other = o; }

    public void Show()
    {
        Console.WriteLine("引擎部分:" + engine);
        Console.WriteLine("车身部分:" + body);
        Console.WriteLine("车轮部分:" + wheel);
        Console.WriteLine("其他部分:" + other);
    }
}

// 抽象建造者类,声明了设置产品各部分的方法,以及返回产品的方法
abstract class CarBuilder
{
    public abstract void BuildEngine();
    public abstract void BuildBody();
    public abstract void BuildWheel();
    public abstract void BuildOther();
    public abstract Car GetCar();
}

// 具体建造者类,实现了抽象建造者的方法,以构建和装配各个部件
class JeepBuilder : CarBuilder
{
    private Car car = new Car();

    public override void BuildEngine() { car.SetEngine("Jeep 引擎"); }
    public override void BuildBody() { car.SetBody("Jeep 车身"); }
    public override void BuildWheel() { car.SetWheel("Jeep 车轮"); }
    public override void BuildOther() { car.SetOther("Jeep 其他部分"); }

    public override Car GetCar() { return car; }
}

// 具体建造者类,实现了抽象建造者的方法,以构建和装配各个部件
class BMWBuilder : CarBuilder
{
    private Car car = new Car();

    public override void BuildEngine() { car.SetEngine("BMW 引擎"); }
    public override void BuildBody() { car.SetBody("BMW 车身"); }
    public override void BuildWheel() { car.SetWheel("BMW 车轮"); }
    public override void BuildOther() { car.SetOther("BMW 其他部分"); }

    public override Car GetCar() { return car; }
}

// 导演类,负责调用建造者以构造产品
class Director
{
    public void Construct(CarBuilder builder)
    {
        builder.BuildEngine();
        builder.BuildBody();
        builder.BuildWheel();
        builder.BuildOther();
    }
}

// 客户端代码
class Client
{
    static void Main(string[] args)
    {
        Director director = new Director();
        CarBuilder builder = new JeepBuilder();
        director.Construct(builder);
        Car car = builder.GetCar();
        car.Show();

        builder = new BMWBuilder();
        director.Construct(builder);
        car = builder.GetCar();
        car.Show();

        Console.Read();
    }
}

以上代码运行结果如下:

建造者模式
建造者模式

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档