Example #1
0
        /// <summary>
        /// 利用表驱动法,读取费率
        /// </summary>
        /// <param name="gender"></param>
        /// <param name="marital"></param>
        /// <param name="smoke"></param>
        /// <param name="age"></param>
        /// <returns></returns>
        public double GetRateByTable(GenderEnum gender, MaritalEnum marital, SmokeEnum smoke, int age)
        {
            byte   type   = (byte)(((byte)gender << 6) | ((byte)marital << 2) | (byte)smoke);
            var    rates  = ratesTable[type];
            double result = 0;

            foreach (var rate in rates)
            {
                if (age >= rate.Item1 && age < rate.Item2)
                {
                    result = rate.Item3;
                    break;
                }
            }
            return(result);
        }
Example #2
0
 /*
  * 通过该方法,可以看出有大量的重复内容,并且一长篇都是If else ,可读性、维护性很差
  * 为此,建议大家尝试表驱动法处理该问题
  */
 public double GetRateByCondition(GenderEnum gender, MaritalEnum marital, SmokeEnum smoke, int age)
 {
     if (gender == GenderEnum.Male)
     {
         if (marital == MaritalEnum.Married)
         {
             if (smoke == SmokeEnum.Smoking)
             {
                 if (age < 20)
                 {
                     return(200);
                 }
                 else if (age < 40)
                 {
                     return(300);
                 }
                 else if (age < 60)
                 {
                     return(500);
                 }
                 else
                 {
                     return(1000);
                 }
             }
             else
             {
                 //to do
             }
         }
         else if (marital == MaritalEnum.Single)
         {
             //to do
         }
         else if (marital == MaritalEnum.Divorce)
         {
             //to do
         }
         else
         {
             //to do
         }
     }
     return(0);
 }
Example #3
0
 public static string MapMaritalEnum(MaritalEnum v)
 {
     switch (v)
     {
         case MaritalEnum.Married:
             return "已婚";
         case MaritalEnum.Love:
             return "恋爱中";
         case MaritalEnum.Single:
             return "单身";
         case MaritalEnum.Separate:
             return "分居";
         case MaritalEnum.Divorce:
             return "离异";
         case MaritalEnum.Secrecy:
             return "保密";
     }
     return "";
 }