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);
                
            }
  • 相关阅读:
    IDL打包发布exe(包含ENVI环境)
    电磁辐射基本概念
    ENVI_REGISTER_DOIT( )函数
    serverlet Web.xml配置代码解释
    Java设置session超时(失效)的时间
    JSP处理XML
    初学JSP
    顶部固顶导航菜单代码css+js
    oracle 关于删除指令的(我每天拼了命的努力,就是为了向那些看不起我的人证明,你们是对的)
    oracle题
  • 原文地址:https://www.cnblogs.com/wangchuang/p/2988474.html
Copyright © 2011-2022 走看看