介绍
这篇文章给大家分享的是有关c#设计模式之策略模式的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
<强>策略模式(策略模式)强>
策略模式属于行为型模式,它定义了一系列的算法,并将每一个算法封装起来,而且使他们可以相互替换,让算法独立于使用它的客户而独立变化。
使用策略模式可以把行为和环境分割开来。环境类负责维持和查询行为类,各种算法则在具体策略类中提供。
<>强角色:强>
1,抽象策略(策略)
这是一个抽象角色,通常由一个接口或抽象类实现。此角色给出所有的具体策略类所需的接口;
2,具体策略(具体策略)
实现抽象策略的具体策略类,包装了相关的算法或行为,
3,环境类(上下文)
持有一个策略类的引用并可以根据逻辑选择实例相应的策略。
<强>示例:强>
命名空间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#设计模式之策略模式的示例分析