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();
        }
    

      

  • 相关阅读:
    [MySQL] MySQL连接字符串总结[转]
    JavaScript删除字符串中的空格
    日期正则表达式[转]
    WIN7拥有管理员权限的使用方法
    SQLWave. GUI Client for MySQL Database Server
    Windows下MySQL多实例运行[转]
    Facebook 的 PHP 性能与扩展性[转]
    改变Datalist行背景色
    Excel导入数据库
    c#创建Table
  • 原文地址:https://www.cnblogs.com/hnzheng/p/12687719.html
Copyright © 2011-2022 走看看