zoukankan      html  css  js  c++  java
  • 抽象工厂模式

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


  • 相关阅读:
    MFC中L, _T(),TEXT,_TEXT区别以及含义
    Qt5完美解决 界面显示中文乱码
    TCP三次握手四次挥手详解
    TCP 长连接与短连接的区别
    Servlet 生命周期、工作原理
    Java反射的三种实现方式
    apache httpclient 4.5 兼容 http https
    mysql千万级大数据SQL查询优化
    Java String字符串补0或空格
    mysql存储过程
  • 原文地址:https://www.cnblogs.com/mikechang/p/1705116.html
Copyright © 2011-2022 走看看