Administrator
发布于 2024-08-04 / 38 阅读
0
0

建造者模式

问题描述

电脑城的老板是直接与客户联系的,然而电脑的组装是老板指挥装机人员将电脑的各个组件组装起来,真正创建产品的是电脑城的装机人员。 用代码来实现该逻辑。

代码实现

电脑类

    public class Computer
    {
        private List<string> parts = new List<string>();
        public void Add(string part)
        {
            parts.Add(part);
        }

        public void Show()
        {
            Console.WriteLine("电脑开始组装....");
            foreach (var part in parts)
            {
                Console.WriteLine($"组件{part}已装好");
            }
            Console.WriteLine("电脑组装完成....");
        }
    }

组装抽象类

    public abstract class Builder
    {
        public abstract void BuildPartCPU();
        public abstract void BuildPartMainBoard();
        public abstract Computer GetComputer();
    }

组装具体类

    public class ConcreteBuilder1 : Builder
    {
        private Computer computer = new Computer();

        public override void BuildPartCPU()
        {
            computer.Add("CPU AMD");
        }

        public override void BuildPartMainBoard()
        {
            computer.Add("Main board1");
        }

        public override Computer GetComputer()
        {
            return computer;
        }
    }

    public class ConcreteBuilder2 : Builder
    {
        private Computer computer2 = new Computer();
        public override void BuildPartCPU()
        {
            computer2.Add("CPU Intel");
        }

        public override void BuildPartMainBoard()
        {
            computer2.Add("Main board2");
        }

        public override Computer GetComputer()
        {
            return computer2;
        }
    }

指挥者

    public class Director
    {
        public void Construct(Builder builder)
        {
            builder.BuildPartCPU();
            builder.BuildPartMainBoard();
        }
    }

Main方法

    class Program
    {
        static void Main(string[] args)
        {
            Director director = new Director();
            
            Builder builder1 = new ConcreteBuilder1();
            director.Construct(builder1);
            builder1.GetComputer().Show();

            Builder builder2 = new ConcreteBuilder2();
            director.Construct(builder2);
            builder2.GetComputer().Show();
        }
    }

运行结果

电脑开始组装....
组件CPU AMD已装好
组件Main board1已装好
电脑组装完成....
电脑开始组装....
组件CPU Intel已装好
组件Main board2已装好
电脑组装完成....

UML图


评论