C# 设计模式 建造者模式

C# 设计模式 建造者模式

在这里插入图片描述

主程序与测试

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BuilderPattern
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("建造者模式-------------------------");

            // + Builder 抽象建造者
            // + ConcreteBuilder 具体建造者
            // + Director 指挥者
            // + Product 产品角色

            // 使用流程
            // 1.创建产品类  Computer
            // 2.创建 抽象建造者  IBuilder
            // 3.具体建造者 HighComputerBuilder 与 LowComputerBuilder
            // 4.创建 指挥者类 Director
            // 5.使用 指挥者 创建产品(计算机)对象 

            // 指挥者 创建产品(计算机)对象 
            // a.创建指挥者
            Director director = new Director();
            // b.传入具体的建造者 创建产品(计算机)
            // 创建低配计算机
            Computer lowComputer = director.Create(new LowComputerBuilder());
            // 创建高配计算机
            Computer highComputer = director.Create(new HighComputerBuilder());

            // c.打印产品(计算机)
            Console.WriteLine(lowComputer.ToString());
            Console.WriteLine(highComputer.ToString());


            Console.ReadLine();
        }
    }
}

1.创建产品类 Computer

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BuilderPattern
{
    // 计算机  (产品类 Product 产品角色)
    public class Computer
    {
        public string strCpu { get; set; } // CPU
        public string strMemory { get; set; } // 内存
        public string strMainBoard { get; set; } // 主板

        public override string ToString()
        {
            return "CPU=" + strCpu + " Memory=" + strMemory + " MainBoard=" + strMainBoard;
        }
    }
}

2.创建 抽象建造者 IBuilder

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BuilderPattern
{   
    // 1.Builder 抽象建造者
    // 接口 定义
    public interface IBuilder
    {
        // 定义抽象建造者的接口   
        void buildCPU();
        void buildMemory();
        void buildMainBoard();

        Computer CreateComputer();
    }
}

3.具体建造者 HighComputerBuilder

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BuilderPattern
{
    // 2.ConcreteBuilder 具体建造者
    // 高配计算机建造者
    public class HighComputerBuilder:IBuilder
    {
        private Computer highCp = new Computer();

        public void buildCPU()
        {
            highCp.strCpu = "高配 CPU";
        }

        public void buildMainBoard()
        {
            highCp.strMainBoard = "高配 主板";
        }

        public void buildMemory()
        {
            highCp.strMemory = "高配 内存";
        }

        public Computer CreateComputer()
        {
            return highCp;
        }
    }
}

3.具体建造者 LowComputerBuilder

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BuilderPattern
{
    // 2.ConcreteBuilder 具体建造者
    // 低配计算机建造者
    public class LowComputerBuilder : IBuilder
    {
        private Computer lowCp = new Computer();

        public void buildCPU()
        {
            lowCp.strCpu = "低配 CPU";
        }

        public void buildMainBoard()
        {
            lowCp.strMainBoard = "低配 主板";
        }

        public void buildMemory()
        {
            lowCp.strMemory = "低配 内存";
        }

        public Computer CreateComputer()
        {
            return lowCp;
        }
    }
}

4.创建 指挥者类 Director

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BuilderPattern
{
    // 3.Director 指挥者
    public class Director
    {
        public Computer Create(IBuilder builder)
        {
            // 依次建造对应 CPU 内存 主板
            builder.buildCPU();
            builder.buildMemory();
            builder.buildMainBoard();

            // 返回创建好的 计算器
            return builder.CreateComputer();
        }
    }
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

廷益--飞鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值