.NET简谈策略模式

来源:深度训练(DotNet专场) 责任编辑:栏目编辑 发表时间:2013-07-01 21:42 点击:

策略模式在我们日常开发中经常被用到,这篇文章不是策略模式的深入讨论和学术研究,只是让初学者能有个基本的了解。

什么叫策略:1. 可以实现目标的方案集合;2. 根据形势发展而制定的行动方针和斗争方法;3. 有斗争艺术,能注意方式方法。

什么叫模式:模式(Pattern)其实就是解决某一类问题的方法论。把解决某类问题的方法总结归纳到理论高度,那就是模式。模式是一种指导,在一个良好的指导下,有助于你完成任务,有助于你作出一个优良的设计方案,达到事半功倍的效果。而且会得到解决问题的最佳办法。

什么叫策略模式:策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。

从上面的官方解释来看,我们已经有了一个基本的雏形。其实设计模式就是前辈们所总结出来的,用来解决某类问题的方法论;这些方法论是经过身经百战的专家们提炼出来的,比较规范的、比较科学的模型。[王清培版权所有,转载请给出署名]

其实设计模式对初学者来说可能有点头疼,比较抽象。大概就是因为初学者对一些概念不能深度的理解,一些理论知识还没能够融会贯通,不过不要紧经过一段时间的实践锻炼就能理解了;下面我们循环渐进的来讲解什么叫策略模式。我们拿真实项目中遇到的问题来讲解吧,这样能更好的吸引注意力。

情景引入:

您是否遇到过这样一个头疼的问题,在我们开发信息系统的时候,经常需要切换不同的数据库。但是由于我们前期开发项目的时候没有考虑到后期的变更,所以这个时候问题就来了。如果需要更换数据库,将大动干戈把代码翻个底朝天。将诸如一些Sql、Oledb、Oracle之类的对象进行全局替换。这样的设计永远都无法满足日后的数据库变更需求。所以在前期设计的时候,我们就需要考虑到系统后期可能存在哪些可能变化的地方,在系统的架构上就需要变通设计(比如:依赖接口而不是具体的对象,通过依赖注入等方式进行策略的变更;)。其实这个时候我们很需要一种模式能解决此类问题,恰好前辈们为我们准备好了(策略模式)。[设计模式的设计原则:尽可能的考虑系统后期的变化;]

1.没有分析之前的系统结构:

情景分析:

我们暂且不谈设计模式,我们试着自己分析一下问题。我们需要一种机制,能在需要的时候自动变更后台数据源的连接对象;我们来收集问题,既然要自动变更后台数据源连接对象,那么我们在编码的过程中就不能直接使用一些诸如SqlConnection、SqlCommand等对象,必须进行提取形成接口,消除类之间的强耦合。[面向对象编程原则:面向接口编程,而不是面向实现编程;]

2.分析之后的系统结构图:

情景分析->接口提取:

  1. /*----------------------------------------------------------------  
  2.  * 作者:王清培  
  3.  * 时间:2010-10-29  
  4.  * ----------------------------------------------------------------*/ 
  5. using System;  
  6. using System.Collections.Generic;  
  7. using System.Text;  
  8. using System.Data;  
  9. using System.Data.SqlClient;  
  10.  
  11. namespace W.Data  
  12. {  
  13.     /// <summary>  
  14.     /// 通用数据源类型接口,

    相关新闻>>

      发表评论
      请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
      用户名: 验证码:点击我更换图片
      最新评论 更多>>

      推荐热点

      • 浅析.NET下XML数据访问新机制
      • asp.net 面试+笔试题目第1/2页
      • C# 邮件地址是否合法的验证
      • C#高级编程:数据库连接[1]
      • asp.net 设置GridView的选中行的实现代码
      • 经典C++程序1
      • IIS 自动回收导致后台定时器失效的问题解决
      • ASP.NET&#160;GridView列表代码示例
      • 微软ASP.NET站点部署指南(3):使用Web.Config文件的Transforma
      网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
      Copyright © 2008-2015 计算机技术学习交流网. 版权所有

      豫ICP备11007008号-1