zoukankan      html  css  js  c++  java
  • 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();
            }
        }
  • 相关阅读:
    关于正餐智能POS6.0.1.1改版后,点击反结账进入点菜界面后无法进行加菜的FAQ
    关于正餐智能POS6.0.1.1改版后,订单模块无法进行部分退款的FAQ
    退款证书相关
    简易付主副机和打印机配置
    秒点直连操作文档
    智能POS打印配置&常见问题FAQ 12-14 后期持续更新
    ERP主副机和打印机配置FAQ
    ASP.NET没有魔法——ASP.NET MVC Controller的实例化与执行
    ASP.NET没有魔法——ASP.NET MVC 路由的匹配与处理
    ASP.NET没有魔法——ASP.NET MVC路由
  • 原文地址:https://www.cnblogs.com/Tonyyang/p/1436234.html
Copyright © 2011-2022 走看看