• Strategy——策略模式


    一、模式概述
    策略模式(Strategy Pattern)在外形上与状态模式很相似,但在意图上有些不同。其意图是使这些算法可以相互替换,并提供一种方法来选择最合适的算法。

              计算个人所得税和企业所得税

    二.

    据上面UML,不难看出,在策略模式里主要有三种角色:环境角色、抽象策略角色和具体策略角色。
    环境(Context)角色:持有一个抽象策略(Strategy)角色的引用。也叫上下文。
    抽象策略(Strategy)角色:这是一个抽象角色,通常由一个接口或一个抽象类来实现。
    具体策略(ConcreteStrategy)角色:包装了相应的算法和行为。

    三.Code实现

          

        
        
    public interface ITaxStrategy
        {
            
    double Calculate(double income);
        }

        
    public class PersonalTaxStrategy : ITaxStrategy
        {
            
    public double Calculate(double income)
            {
                
    return income * 0.1;
            }
        }

        
    public class EnterpriseTaxStrategy : ITaxStrategy
        {
            
    public double Calculate(double income)
            {
                
    return income * 0.5;
            }
        }

        
    public class TaxOp
        {
            
    private ITaxStrategy m_strategy;
            
    public TaxOp(ITaxStrategy strategy)
            {
                m_strategy 
    = strategy;
            }
            
    public double GetTax(double income)
            {
                
    return m_strategy.Calculate(income);
            }
        }

        
    class Program
        {
            
    static void Main(string[] args)
            {
                TaxOp op 
    = new TaxOp(new PersonalTaxStrategy());
                Console.WriteLine(
    "The Personal Tax is :{0}", op.GetTax(1000));

                Console.Read();
            }
        }
  • 相关阅读:
    C/C++程序员必须熟练应用的开源项目[转]
    VC中基于 Windows 的精确定时[转]
    语音增强算法的概述[转]
    语音增强 [转]
    [转]四款主流手机音乐播放器横评
    1个简单的Log
    [转]全方位对比 安卓手机音乐播放器推荐
    [转]4款手机音乐播放器对比
    一个简单的log
    音频和视频合并
  • 原文地址:https://www.cnblogs.com/Tonyyang/p/1436234.html
Copyright © 2020-2023  润新知