开发应用 - 策略模式(Strategy Pattern) 常用设计模式
开发应用 - 策略模式(Strategy Pattern) 常用设计模式
策略模式(Strategy Pattern) 策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。 策略模式让算法独立于使用它的客户而独立变化。 /// <summary> /// 更新数据的策略接口 /// </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> /// 策略工厂 /// </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) 开发应用-命令模式(C#实现POS收银功能) 开发应用-观察者模式之C#实现缓存数据更新 设计模式 - 外观模式应用(Façade Pattern) 开发应用-RepositoryItemLookUpEdit显示名称 C#.Net OOP系列之接口设计及策略应用实战 企业数据库管理应用系统实现多种登录方式(策略模式) C#设计模式应用-单件模式(Singleton Pattern) 设为常用/取消常用快捷按钮开发备注 CS系统三层架构扩展支持WCF及策略模式应用(原创) 软件开发与设计 - EIP-企业信息门户 软件开发与设计 - MIS-管理信息系统-Oracle常用系统表 软件开发与设计 - MIS-管理信息系统(ASG-ERP-BD-V12202K和Level2通讯应用数据库设计) 软件开发与设计 - MIS-管理信息系统(城市生命线实时监测物联网应用示工程数据库设计) 软件开发与设计 - HR-人力资源管理系统(城管系统统计应用数据库设计)
其它资料:
什么是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内容管理系统 | |