zoukankan      html  css  js  c++  java
  • 建造者模式

      static void Main(string[] args)
            {
    
                /*建造者模式,适合创建复杂对象,与工厂模式的关注点不一样,建造者重点关注,对象过程的创建
                 * 
                 * 
                 * 
                 */
    
                {
                    // 创建 福特 车   注重每个过程的建造
                    BuilderFord builder = new BuilderFord();
                    builder.BuilderEngin();
                    builder.BuilderWheels();
                    builder.BuilderGearbox();
                    builder.CreateCar();
                }
                {
                    // 创建 BYD
                    BuilderByd builder = new BuilderByd();
                    builder.BuilderEngin();
                    builder.BuilderWheels();
                    builder.BuilderGearbox();
                    builder.CreateCar();
                }
                {
    
                    // 这里进一步 进行抽象
                    BuilderByd builderByd = new BuilderByd();
                    IBuilder builder = new BuilderFactory(builderByd);
                    builder.GetCar();
                }
    
                Console.WriteLine("Hello World!");
            }
    

      

       public class BuilderFactory : IBuilder
        {
    
            private AbstructBuilder _builder = default(AbstructBuilder);
            public BuilderFactory(AbstructBuilder builder) => this._builder = builder;
            public void GetCar()=> this._builder.CreateCar();
    
    
        }
    
    
     public interface IBuilder
        {
            void GetCar();
    
        }
    

      

      public class BuilderFord : AbstructBuilder
        {
    
            private Wheels _wheels = default(Wheels);
            private Enginer _enginer = default(Enginer);
            private Gearbox _gearbox = default(Gearbox);
            public void BuilderWheels()
            {
                _wheels = new Wheels();
    
            }
            public void BuilderEngin()
            {
                _enginer = new Enginer();
    
            }
            public void BuilderGearbox()
            {
                _gearbox = new Gearbox();
    
            }
            public override void CreateCar()
            {
                // 使用上面三个对象
                Console.WriteLine($"{_enginer}{_wheels}{_gearbox}");
    
            }
    
        }
    

      

    public abstract class AbstructBuilder
        {
            public abstract void CreateCar();
        }
    

      

  • 相关阅读:
    10分钟学会理解和解决MySQL乱码问题
    C# 序列类为 xml 可以使用的特性大全
    C# GUID ToString
    C# GUID ToString
    C# AddRange 添加位置
    C# AddRange 添加位置
    VisualStudio 使用多个环境进行调试
    VisualStudio 使用多个环境进行调试
    C# 使用外部别名
    C# 使用外部别名
  • 原文地址:https://www.cnblogs.com/hnzheng/p/12687719.html
Copyright © 2011-2022 走看看