zoukankan      html  css  js  c++  java
  • Builder模式经典模式

      public class Vehicle
        {
            public IEnumerable<string> Wheels { get; set; }
            public IEnumerable<string> Lights { get; set; }
        }
        /// <summary>
        /// abstract builder
        /// </summary>
        public abstract class VehicleBuilderBase
        {
            public Vehicle Vehicle { get; protected set; }
    
            public virtual void Create()
            {
                Vehicle = new Vehicle();
            }
    
            public abstract void AddWheels();
            public abstract void AddLights();
        }
     /// <summary>
        /// concrete builder
        /// </summary>
        public class CarBuilder : VehicleBuilderBase
        {
            #region VehicleBuilderBase Members
    
            public override void AddWheels()
            {
                Vehicle.Wheels = new string[] {"front", "front", "back", "back"};
            }
    
            public override void AddLights()
            {
                Vehicle.Lights = new string[] { "front", "front", "back", "back" };
            }
    
            #endregion
        }
    
        /// <summary>
        /// concrete builder
        /// </summary>
        public class BicycleBuilder : VehicleBuilderBase
        {
            #region VehicleBuilderBase Members
    
            public override void AddWheels()
            {
                Vehicle.Wheels = new string[] { "front", "back" };
            }
    
            public override void AddLights()
            {
                Vehicle.Lights = null;
            }
    
            #endregion
        }

    调用

       [TestMethod]
            public void BuildUp()
            {
                var maker = new VehicleMaker();
                maker.Builder = new CarBuilder();
                maker.Construct();
                Assert.AreEqual<int>(4, maker.Vehicle.Wheels.Count());
                Assert.AreEqual<int>(4, maker.Vehicle.Lights.Count());
                maker.Builder = new BicycleBuilder();
                maker.Construct();
                Assert.AreEqual<int>(2, maker.Vehicle.Wheels.Count());
                Assert.IsNull(maker.Vehicle.Lights);
                
            }
  • 相关阅读:
    第六章 条件处理
    VS2019配置MKL教程(Windows)
    攻防世界--srm-50
    攻防世界--The_Maya_Society
    攻防世界--re1-100
    BUUCTF--findit
    凯撒加密与解密实现
    BUUCTF--rsa
    正则表达式
    PyQuery详解
  • 原文地址:https://www.cnblogs.com/wangchuang/p/2988474.html
Copyright © 2011-2022 走看看