设计模式和原则:策略模式
2013-06-02 14:28
375 查看
[u]设计模式和原则索引[/u]
using System; /// /// 策略模式: /// 策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化. /// 此模式主要用来将应用中需要变化的部分独立出来,以让系统更具有弹性 /// 重心不在算法的实现 /// 策略模式的核心在于将易于变化的部分独立出来进行封装,例如:商家在不同节假日会有各种各样的优惠促销活动, /// 那么订单里的计价模块就适合做成一个策略。 /// 在策略模式里,哪怕算法只有一个实现也是有意义的,将应用和算法实现解耦,增加系统的可扩展性 /// /// 下例: /// OrderService和ProductService都需要写日志,但它们写入位置不同,OrderService要写入文件,而ProductService要写入DB /// 直接在各自类中独自实现不利于代码的复用,也不利于维护(假如要再添加个ListService也要写入文件或者要添加个新的日志方式:要写入MessageQueue) /// 你也可以在Service类中添加一个Setter方法,实现在运行时的动态改变 /// namespace fofo.DesignPattern.Strategy { #region Service public abstract class Service { // 这是一个策略,将logger的实现独立于Service protected ILogger _logger = null; protected void Initialize() { // init } public abstract void Invoke(object args); protected void WriteLog(string message) { _logger.WriteLog(message); } //other code } public class OrderService : Service { public OrderService() { _logger = new FileLogger(); } public override void Invoke(object args) { WriteLog("begin..."); // do work WriteLog("end..."); } } public class ProductService : Service { public ProductService() { _logger = new DBLogger(); } public override void Invoke(object args) { WriteLog("begin..."); // do work WriteLog("end..."); } } #endregion #region Logger // 抽象策略角色,它们可以互相替换 public interface ILogger { void WriteLog(string message); } // 具体策略角色 public class FileLogger : ILogger { public void WriteLog(string message) { // write log to file } void ILogger.WriteLog(string message) { this.WriteLog(message); } // other code } // 具体策略角色 public class DBLogger : ILogger { public void WriteLog(string message) { // write log to db } void ILogger.WriteLog(string message) { this.WriteLog(message); } // other code } #endregion }
相关文章推荐
- 策略模式和设计原则
- 策略设计模式,单一,依赖倒转原则
- 从头认识设计模式-策略模式-04-引入设计原则:分离变化与不变的部分
- 设计模式的原则和策略
- 策略模式和设计原则
- 设计模式解析(第二版)笔记7 设计模式的原则与策略
- 设计模式拾荒之策略模式(Strategy Pattern): 开闭原则的践行者
- 从头认识设计模式-策略模式-05-引入设计原则:面向接口编程
- 《设计模式解析》 第14章 设计模式的原则与策略 复习题
- 设计模式--工厂模式.策略模式.单一职责原则.开放封闭原则.依赖倒转原则
- 设计模式的原则和策略
- 设计模式六大原则(2):里氏替换原则
- 设计模式之策略模式
- Java中的设计模式与7大原则归纳整理
- 设计模式六大原则(4):接口隔离原则
- 4.2 《硬啃设计模式》 第19章 设计你的战士 - 策略模式(Strategy Pattern)
- 设计模式六大原则(3):依赖倒置原则
- 设计模式六大原则(4):接口隔离原则
- 设计模式学习之路——Strategy 策略模式
- 设计模式六大原则之----迪米特、开闭原则(六大原则简单总结)