• 抽象工厂模式


    代码
    using System;
    using System.Collections.Generic;

    public class Constant
    {
        
    public static double Base_salary=4000;
    }

    /// <summary>
    /// 定义抽象奖金类
    /// </summary>
    public abstract class Bonus
    {
        
    public abstract  double Calculate();
    }
    /// <summary>
    /// 中国奖金
    /// </summary>
    public class ChineseBonus:Bonus
    {
        
    override public double Calculate()
        {
            
    return Constant.Base_salary*0.1;
        }
    }
    /// <summary>
    /// 美国奖金
    /// </summary>
    public class AmericanBonus:Bonus
    {
        
    override public double Calculate()
        {
            
    return Constant.Base_salary*0.15;
        }
    }

    /// <summary>
    /// 定义抽象税收
    /// </summary>
    public abstract class Tax
    {
        
    public abstract double Calculate();
    }
    /// <summary>
    /// 中国税收
    /// </summary>
    public class ChineseTax:Tax
    {
        
    override public double Calculate()
        {
            
    return Constant.Base_salary*0.1;
        }
    }
    /// <summary>
    /// 美国税收
    /// </summary>
    public class AmericanTax:Tax
    {
        
    override public double Calculate()
        {
            
    return Constant.Base_salary*0.2;
        }
    }

    /// <summary>
    /// 抽像工厂
    /// </summary>
    public abstract class AbstractFactory
    {
        
    public abstract Tax getTax();
        
    public abstract Bonus getBonus();
    }

    /// <summary>
    /// 中国工厂
    /// </summary>
    public class ChineseFactory:AbstractFactory
    {
        
    public override Tax getTax()
        {
            
    return new ChineseTax();
        }
        
    public override Bonus getBonus()
        {
            
    return new ChineseBonus();
        }
    }
    /// <summary>
    /// 美国工厂
    /// </summary>
    public class AmericanFactory:AbstractFactory
    {
    //     public static AbstractFactory GetInstance()
    //      {
    //           string factoryName = Constant.STR_FACTORYNAME.ToString();
    //
    //           AbstractFactory instance;
    //
    //           if(factoryName != "")
    //                instance = (AbstractFactory)Assembly.Load(factoryName).CreateInstance(factoryName);
    //            else
    //                instance = null;
    //
    //            return instance;
    //        }
        public override Tax getTax()
        {
            
    return new AmericanTax();
        }
        
        
    public override Bonus getBonus()
        {
            
    return new AmericanBonus();
        }
    }


  • 相关阅读:
    Java-IO流-简介
    Java-异常处理-自定义异常
    致橡树-舒婷
    js字符串/数组常用方法总结
    使用vue-cli4快速搭建vue项目demo
    使用vue-cli4快速搭建vue项目demo
    小白第一次用MacOS
    文字背景对比度contrast ratio的计算公式
    如何使用 v-model 绑定一个 computed 属性?
    Java基础--数组
  • 原文地址:https://www.cnblogs.com/mikechang/p/1705116.html
Copyright © 2020-2023  润新知