首页 > Windows开发 > 详细

C# 设计模式(5)建造者模式

时间:2020-12-01 14:58:09      阅读:24      评论:0      收藏:0      [点我收藏+]

建造者模式

1. 复杂对象创建,包含多步骤

2. 建造流程相对固定

代码实现:造车

模型:

namespace BuilderPattern.Models
{
    public class Engine
    {
        public string Name { get; set; }
    }
    public class Wheel
    {
        public string Name { get; set; }
    }
    public class Light
    {
        public string Name { get; set; }
    }
    public class Car
    {
        public Car(Engine engine,Wheel wheel,Light light)
        {
            
        }
        public string Name { get; set; }
    }
}

建造者:

    public abstract class AbstractBuilder
    {
       public abstract void BuildEngine();
       public abstract void BuildWheel();
       public abstract void BuildLight();
       public abstract Car BuildCar();
    }
    public class BuilderTesla:AbstractBuilder
    {
        private Engine _engine = null;
        private Wheel _wheels = null;
        private Light _lights = null;

        public override void BuildEngine()
        {
            _engine = new Engine(){Name = "Tesla_Engine"};
            Console.WriteLine($"{this.GetType().Name} build {_engine.Name}");
        }

        public override void BuildWheel()
        {
            _wheels = new Wheel() { Name = "Tesla_Wheels" };
            Console.WriteLine($"{this.GetType().Name} build {_wheels.Name}");
        }

        public override void BuildLight()
        {
            _lights = new Light() { Name = "Tesla_Light" };
            Console.WriteLine($"{this.GetType().Name} build {_lights.Name}");
        }

        public override Car BuildCar()
        {
            var car = new Car(_engine,_wheels,_lights) { Name = "Tesla_Model Y" };
            Console.WriteLine($"{this.GetType().Name} build {car.Name}");
            return car;
        }
    }

导演:

    public class Director
    {
        private readonly AbstractBuilder _abstractBuilder;

        public Director(AbstractBuilder abstractBuilder)
        {
            _abstractBuilder = abstractBuilder;
        }

        public Car GetCar()
        {
            _abstractBuilder.BuildEngine();
            _abstractBuilder.BuildWheel();
            _abstractBuilder.BuildLight();

           var car = _abstractBuilder.BuildCar();

           return car;
        }
    }

上层调用:

    class Program
    {
        static void Main(string[] args)
        {
            BuilderTesla builderTesla = new BuilderTesla();
            Director director = new Director(builderTesla);
            director.GetCar();
        }
    }

结果:

技术分享图片

 

C# 设计模式(5)建造者模式

原文:https://www.cnblogs.com/YourDirection/p/14067560.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!