开发应用 - 策略模式(Strategy Pattern) 常用设计模式
开发应用 - 策略模式(Strategy Pattern) 常用设计模式
策略模式(Strategy Pattern)
策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。
策略模式让算法独立于使用它的客户而独立变化。

/// <summary>
/// 更新数据的策略接口
/// </summary>
public interface IStrategyUpdate
{
bool Update(DataTable myData);
}
// 来源:www.CSFramework.com, C/S结构框架学习网
/// 更新数据的策略接口
/// </summary>
public interface IStrategyUpdate
{
bool Update(DataTable myData);
}
// 来源:www.CSFramework.com, C/S结构框架学习网
/// <summary>
/// 把数据上传到火星上
/// </summary>
public class StrategySaveToMars : IStrategyUpdate
{
ListBox _log;
public StrategySaveToMars(ListBox log) { _log = log; }
public bool Update(DataTable myData)
{
//remoteController.SendCommand("START_RCV_DEVICE");
_log.Items.Add("已启动火星上的接收装置,正在上传数据...");
//处理myData数据....
return true;
}
}
// 来源:www.CSFramework.com, C/S结构框架学习网
/// <summary>
/// 将数据保存到SQL服务器
/// </summary>
public class StrategySaveToSqlServer : IStrategyUpdate
{
ListBox _log;
public StrategySaveToSqlServer(ListBox log) { _log = log; }
public bool Update(DataTable myData)
{
//保存到SQL服务器所进行的处理.....
_log.Items.Add("正在将数据保存到SQL服务器..");
//处理myData数据....
return true;
}
}
// 来源:www.CSFramework.com, C/S结构框架学习网
/// <summary>
///在无法连接SQL服务器的情况下进行本地缓存.
///进数据转换为XML文件保存在指定的目录下.
/// </summary>
public class StrategySaveToLocal : IStrategyUpdate
{
ListBox _log;
public StrategySaveToLocal(ListBox log) { _log = log; }
public bool Update(DataTable myData)
{
//进行本地缓存处理.....
_log.Items.Add("正在进行本地缓存..");
//处理myData数据....
return true;
}
}
// 来源:www.CSFramework.com, C/S结构框架学习网
/// <summary>
/// 应用场景(客户类)
/// </summary>
public class StrategyContext
{
public static void ExecuteStrategy(IStrategyUpdate strategy, ListBox log)
{
log.Items.Add("系统分析网络连线质量后选择:" strategy.ToString() "策略!");
strategy.Update(new DataTable());
}
}
// 来源:www.CSFramework.com, C/S结构框架学习网
/// 应用场景(客户类)
/// </summary>
public class StrategyContext
{
public static void ExecuteStrategy(IStrategyUpdate strategy, ListBox log)
{
log.Items.Add("系统分析网络连线质量后选择:" strategy.ToString() "策略!");
strategy.Update(new DataTable());
}
}
// 来源:www.CSFramework.com, C/S结构框架学习网
/// <summary>
/// 策略工厂
/// </summary>
public class StrategyFactory
{
/// <summary>
/// 用户选择策略
/// </summary>
public static IStrategyUpdate Create(int n, ListBox log)
{
log.Items.Add("信号值为:" n.ToString());
IStrategyUpdate strategy = null;
if (n >= 95) //网络信号最佳状态
strategy = new StrategySaveToMars(log); //信号最佳,把数据上传到火星上
if ((n >= 50) && (n < 95)) //网络信号最佳状态
strategy = new StrategySaveToSqlServer(log); //信号一般,执行更新SQL策略
else if (n < 50)
strategy = new StrategySaveToLocal(log); //信号差或断线,执行本地缓存策略
return strategy;
}
/// <summary>
/// 模拟网络状态
/// </summary>
public static IStrategyUpdate Create(ListBox log)
{
//这里模拟网络状态, 信号值n>95为极佳状态,50<n<95为较好状态,0<n<50为信号
Random rm = new Random();
int n = rm.Next(100); //信号值为最大为100
return Create(n, log);
}
}
// 来源:www.CSFramework.com, C/S结构框架学习网
/// 策略工厂
/// </summary>
public class StrategyFactory
{
/// <summary>
/// 用户选择策略
/// </summary>
public static IStrategyUpdate Create(int n, ListBox log)
{
log.Items.Add("信号值为:" n.ToString());
IStrategyUpdate strategy = null;
if (n >= 95) //网络信号最佳状态
strategy = new StrategySaveToMars(log); //信号最佳,把数据上传到火星上
if ((n >= 50) && (n < 95)) //网络信号最佳状态
strategy = new StrategySaveToSqlServer(log); //信号一般,执行更新SQL策略
else if (n < 50)
strategy = new StrategySaveToLocal(log); //信号差或断线,执行本地缓存策略
return strategy;
}
/// <summary>
/// 模拟网络状态
/// </summary>
public static IStrategyUpdate Create(ListBox log)
{
//这里模拟网络状态, 信号值n>95为极佳状态,50<n<95为较好状态,0<n<50为信号
Random rm = new Random();
int n = rm.Next(100); //信号值为最大为100
return Create(n, log);
}
}
// 来源:www.CSFramework.com, C/S结构框架学习网

参考文档:
开发应用-职责链模式(Chain Of Resposibility Pattern)
CS系统三层架构扩展支持WCF及策略模式应用(原创)
企业数据库管理应用系统实现多种登录方式(策略模式)
开发应用-观察者模式之C#实现缓存数据更新
开发应用-命令模式(C#实现POS收银功能)
GoF设计模式:原型模式(Prototype Pattern)—对象的克隆-C/S开发框架
GoF设计模式:工厂模式(Factory Pattern)-C/S开发框架
GoF设计模式:外观模式(Facade Pattern)—提供统一的入口-C/S开发框架
GoF设计模式:中介者模式(Mediator Pattern)—协调多个对象之间的交互-C/S开发框架
GoF设计模式:代理模式(Proxy Pattern)—对象的间接访问-C/S开发框架
GoF设计模式:桥接模式(Bridge Pattern)—处理多维度变化-C/S开发框架
GoF设计模式:职责链模式(Chain of Responsibility Pattern)—请求的链式处理-C/S开发框架
GoF设计模式:命令模式(Command Pattern)—请求发送者与接收者解耦-C/S开发框架
GoF设计模式:装饰模式(Decorator Pattern)—扩展系统功能-C/S开发框架
GoF设计模式:享元模式(Flyweight Pattern)—实现对象的复用-C/S开发框架
GoF设计模式:访问者模式(Visitor Pattern)—操作复杂对象结构-C/S开发框架
开发应用-职责链模式(Chain Of Resposibility Pattern)
CS系统三层架构扩展支持WCF及策略模式应用(原创)
企业数据库管理应用系统实现多种登录方式(策略模式)
开发应用-观察者模式之C#实现缓存数据更新
开发应用-命令模式(C#实现POS收银功能)
GoF设计模式:原型模式(Prototype Pattern)—对象的克隆-C/S开发框架
GoF设计模式:工厂模式(Factory Pattern)-C/S开发框架
GoF设计模式:外观模式(Facade Pattern)—提供统一的入口-C/S开发框架
GoF设计模式:中介者模式(Mediator Pattern)—协调多个对象之间的交互-C/S开发框架
GoF设计模式:代理模式(Proxy Pattern)—对象的间接访问-C/S开发框架
GoF设计模式:桥接模式(Bridge Pattern)—处理多维度变化-C/S开发框架
GoF设计模式:职责链模式(Chain of Responsibility Pattern)—请求的链式处理-C/S开发框架
GoF设计模式:命令模式(Command Pattern)—请求发送者与接收者解耦-C/S开发框架
GoF设计模式:装饰模式(Decorator Pattern)—扩展系统功能-C/S开发框架
GoF设计模式:享元模式(Flyweight Pattern)—实现对象的复用-C/S开发框架
GoF设计模式:访问者模式(Visitor Pattern)—操作复杂对象结构-C/S开发框架
其它资料:
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 |
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 |
在线客服
