设计模式-建造者模式

using System;
 
namespace BuilderDesignPatternExample
{
    // 产品类
    public class Product
    {
        public string PartA { get; set; }
        public string PartB { get; set; }
        public string PartC { get; set; }
    }
 
    // 建造者抽象类
    public abstract class Builder
    {
        public abstract void BuildPartA();
        public abstract void BuildPartB();
        public abstract void BuildPartC();
        public abstract Product GetResult();
    }
 
    // 具体建造者类
    public class ConcreteBuilder : Builder
    {
        private Product product = new Product();
 
        public override void BuildPartA()
        {
            product.PartA = "构建部分A";
        }
 
        public override void BuildPartB()
        {
            product.PartB = "构建部分B";
        }
 
        public override void BuildPartC()
        {
            product.PartC = "构建部分C";
        }
 
        public override Product GetResult()
        {
            return product;
        }
    }
 
    // 指挥者类
    public class Director
    {
        public void Construct(Builder builder)
        {
            builder.BuildPartA();
            builder.BuildPartB();
            builder.BuildPartC();
        }
    }
 
    class Program
    {
        static void Main(string[] args)
        {
            Director director = new Director();
            Builder builder = new ConcreteBuilder();
            director.Construct(builder);
            Product product = builder.GetResult();
 
            Console.WriteLine(product.PartA);
            Console.WriteLine(product.PartB);
            Console.WriteLine(product.PartC);
 
            // 输出产品的各个部分
        }
    }
}

这段代码展示了如何在C#中实现建造者设计模式。它定义了一个产品类Product,一个抽象的建造者类Builder,一个具体的建造者类ConcreteBuilder,以及一个指挥者类DirectorDirector类负责安排构建过程,而ConcreteBuilder类则实际构建产品的各个部分。最后,在Main方法中,我们创建了指挥者、建造者和产品对象,并构建了产品,然后输出了产品的各个部分。

相关推荐

  1. 设计模式——建造模式

    2024-07-20 16:18:05       64 阅读
  2. 设计模式-建造模式

    2024-07-20 16:18:05       56 阅读
  3. 设计模式-建造模式

    2024-07-20 16:18:05       53 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-20 16:18:05       123 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-20 16:18:05       131 阅读
  3. 在Django里面运行非项目文件

    2024-07-20 16:18:05       109 阅读
  4. Python语言-面向对象

    2024-07-20 16:18:05       117 阅读

热门阅读

  1. 基于 Gunicorn、Flask 和 Docker 的 Web 应用开发

    2024-07-20 16:18:05       29 阅读
  2. 使用git worktree同时打开同一项目的不同分支代码

    2024-07-20 16:18:05       29 阅读
  3. 【SpringBoot】单元测试之测试Service方法

    2024-07-20 16:18:05       29 阅读
  4. css样式

    css样式

    2024-07-20 16:18:05      28 阅读
  5. deque学习笔记

    2024-07-20 16:18:05       29 阅读
  6. 题解:T480715 true

    2024-07-20 16:18:05       28 阅读
  7. 你有多自律就有多自由

    2024-07-20 16:18:05       30 阅读
  8. 2024 暑假友谊赛 2

    2024-07-20 16:18:05       32 阅读