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

      

  • 相关阅读:
    Java调用本地接口:java.lang.UnsatisfiedLinkError
    httpSession
    <mvc:annotation-driven>和DefaultAnnotationHandlerMapping 配置教训
    Spring 中的HiddenHttpMethodFilter类
    Myeclipse Jquery代码提示
    修改MyEclipse8.5的默认工作空间
    React 实战系列:模块化
    兼容性 memo
    破解 JS(原型)继承
    CSS Basic Memo
  • 原文地址:https://www.cnblogs.com/hnzheng/p/12687719.html
Copyright © 2011-2022 走看看