c#设计模式之策略模式的示例分析

  介绍

这篇文章给大家分享的是有关c#设计模式之策略模式的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

<强>策略模式(策略模式)

策略模式属于行为型模式,它定义了一系列的算法,并将每一个算法封装起来,而且使他们可以相互替换,让算法独立于使用它的客户而独立变化。

使用策略模式可以把行为和环境分割开来。环境类负责维持和查询行为类,各种算法则在具体策略类中提供。

<>强角色:

1,抽象策略(策略)

这是一个抽象角色,通常由一个接口或抽象类实现。此角色给出所有的具体策略类所需的接口;

2,具体策略(具体策略)

实现抽象策略的具体策略类,包装了相关的算法或行为,

3,环境类(上下文)

持有一个策略类的引用并可以根据逻辑选择实例相应的策略。

<强>示例:

 C #设计模式之策略模式的示例分析

命名空间StragetyPattern中包含策略基类税收以及它的8个实现类,上下文环境类持有策略基类。本示例通过一个优雅的方式来计算个人所得税。

c#开发笔记之04 -如何用c#优雅的计算个人所得税?

namespace  StragetyPattern public  abstract  class  Tax  {      ,,,protected  decimal  TaxRate =, 0;      ,,,protected  decimal  QuickDeduction =, 0;      ,,,public  virtual  decimal 计算(decimal 收入),{   ,,,,,,,return  income  *, TaxRate 作用;QuickDeduction;   ,,,}      }

策略基类税表示个人所得税,税率为税率,QuickDeduction为速算扣除数,计算计算相应收入的个人所得税。

public  class  Level0 :, Tax  {      ,,,public  Level0 (), {   ,,,,,,,TaxRate =, 0.00 m;   ,,,,,,,QuickDeduction =, 0;   ,,,}      }

0级个人所得税阶梯,表示个人所得税的初始状态。

public  class  Level1 :, Tax  {      ,,,public 使(),{   ,,,,,,,TaxRate =, 0.03 m;   ,,,,,,,QuickDeduction =, 0;   ,,,}      }

1级个人所得税阶梯。

public  class  Level2 :, Tax  {      ,,,public 二级(),{   ,,,,,,,TaxRate =, 0.10 m;   ,,,,,,,QuickDeduction =, 105;   ,,,}      }

2级个人所得税阶梯。

public  class  Level3 :, Tax  {      ,,,public  Level3 (), {   ,,,,,,,TaxRate =, 0.20 m;   ,,,,,,,QuickDeduction =, 555;   ,,,}      }

3级个人所得税阶梯。

public  class  Level4 :, Tax  {      ,,,public  Level4 (), {   ,,,,,,,TaxRate =, 0.25 m;   ,,,,,,,QuickDeduction =, 1005;   ,,,}      }

4级个人所得税阶梯。

public  class  Level5 :, Tax  {      ,,,public  Level5 (), {   ,,,,,,,TaxRate =, 0.30 m;   ,,,,,,,QuickDeduction =, 2755;   ,,,}      }

5级个人所得税阶梯。

public  class  Level6 :, Tax  {      ,,,public  Level6 (), {   ,,,,,,,TaxRate =, 0.35 m;   ,,,,,,,QuickDeduction =, 5505;   ,,,}      }

6级个人所得税阶梯。

public  class  Level7 :, Tax  {      ,,,public  Level7 (), {   ,,,,,,,TaxRate =, 0.45 m;   ,,,,,,,QuickDeduction =, 13505;   ,,,}      }

7级个人所得税阶梯。

public  class  Context  {      ,,,private  Tax  _tax =,空;      ,,,private  const  decimal  EXEMPTION_VALUE =, 3500;      ,,,private  List, _taxLevel =, new  List {   ,,,,,,,,   ,,,,,,,,1500   ,,,,,,,,4500   ,,,,,,,,9000   ,,,,,,,,35000   ,,,,,,,,55000   ,,,,,,,,80000   ,,,,,,decimal.MaxValue   ,,,};      null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

c#设计模式之策略模式的示例分析