一、概述
我们来实现一个企业的工资系统,该企业中不同级别的员工工资算法都不相同,针对该问题,最容易想到的莫过于在代码中堆积一大堆if…else…语句或者是switch…case…语句。如果该企业中不同级别的员工过多,或是对级别的调整比较频繁,那该系统就会显得复杂而脆弱。如何能将对象和算法解耦,从而使得在系统运行时能透明的改变对象的算法呢?这就到了策略模式大显身手的时候了。
二、策略模式
策略模式定义了一系列算法,把它们一个个封装起来,并且使它们可相互替换。该模式可使得算法能独立于使用它的客户而变化。
策略模式的结构图如下:
Context代表需要改变算法的那个对象,它维护了一个对Strategy对象的引用,可以定义一个接口允许Strategy对象来访问它的数据。
Strategy定义了所支持算法的公共接口,Context通过这个接口来调用ConcreteStrategy定义的算法。
ConcreteStrategy实现了具体的算法。
代码块
策略实例:
///
/// 数据库操作方法接口
///
public interface DataBaseMethod
{
///
/// 数据拷贝方法
///
///
bool SelectCopyData(string bg, string eg, string DbName, string DbNewName);
ArrayList AddTableName();
}
///
/// 方法
///
public class TsDataBaseMethod : DataBaseMethod
{
public bool SelectCopyData(string bg, string eg, string DbName, string DbNewName)
{
SqlConnection sqlConn = new SqlConnection(SQLHelper.connectionStr

本文介绍如何使用C#策略模式解决企业工资系统中不同级别员工工资算法不同的问题,避免大量if...else...或switch...case...语句,通过策略模式实现算法的动态切换和解耦。示例代码包括一个数据库操作方法接口及其具体实现。
最低0.47元/天 解锁文章
246

被折叠的 条评论
为什么被折叠?



