缺点:
只有在全部的算法和行为都被客户端了解的环境下,策略模式才是应该被选择使用的。因为,客户端要能够自己本身独立地选择哪个策略类,就应该了解整个系统中全部策略类的情况。这也预示着,所有这些算法之间的区分客户端都需要明白,不然无法做到对算法类做出恰当的抉择。
3.5策略模式的运用意义
如何设计对象,让整个系统具有良好的可扩展性是非常重要的。不完善的设计,系统无法对这些转变做出迅速地反应。好的设计,系统将会具有很好的可文护性,对系统的任何更系统的改都很容易。
策略模式在软件设计中的应用成功实现了以上所提到的要求。策略模式界说了所有的算法,分别封装算法,让他们能实现彼此更换替代。算法在策略模式的帮助下,实现了独立于客户而独立变化。
策略模式给予了管理相关的算法族的办法。策略类的等级结构界说了一个算法或行为族。如果适当的利用继承,public代码能放在父类中,重复的代码便能被防止。
策略模式使继承关系之间的变更成为了可能,继承能够在策略模式下对各种算法和行为处置。在没有策略模式的帮助下,这些需要用到算法和行为类的子类,可能会存在于它们本身的类中,不同的子类会呈现不一样的算法和行为。这样会造成的结果是,调用这些算法和行为的会和它们自身混为一谈。确认用什么算法或者选择什么行为的逻辑会与算法或行为的逻辑夹杂在一起,所以不可能实现单独演变。
策略模式的恰当利用,能让多重条件转移语句得到避免。这种语句非常不方便文护,因为它会造成算法与逻辑的混乱。这种把所有算法放在一个相同的语句中的方法,是非常不可取的,它比使用继承的办法还要原始和落后。
3.6适合使用策略模式的情景
在下述情况下可以使用策略模式。
(1)许多相关的类仅仅是行为有异。策略所呈现的方法是,供给一个用许多行为里的一个行为配置一个类。
(2)需要使用相同算法的不同变化类型,策略模式是用在实现算法的类层次。(3)在客户不知情的数据被算法行使时,策略模式同样适用。这样可以预防复杂的数据结构直接显露。
(4)在一个类中,许多种类被界说,这么多行为呈现在这个类中的方式为多个条件语句。可以把与之有关的条件分支放在不同的策略类里,来替代条件语句。
4 开发工具及应用实现
4.1开发工具介绍
4.1.1 C#语言的 概念
C#是在.net平台上被运行的,面向对象的语言。在单一继承、接口等部分都与Java相似,除此之外,C#与Java还有很多十分雷同的语法,所以C#在某种程度上来说与Java有着很多相同的地方。
然而C#也有许多不同于Java之处,它和COM是直接集成的。C和C++都是面向过程的语言,C#是由它们两门语言进化衍生出的语言,它是面向对象的,它是一门易懂,相对稳定的语言,相较C和C++,它显得更加浅显。C#传承了这两门语言的一些强大的特色之外,也摒弃了它们那些让人难以理解的部分,多重继承在C#中是可以实现的。C#无疑已经是在.Net平台上人们会第一选择的一门语言,因为它简易的语言风格,新颖的特点,也因为它同时集结了VB与C++的优点。
开发人员能在使用C#时,在.net平台上对应用程序做出迅速地编写与修改,因为C#是一门面向对象的编程语言,而.net平台拥有的特性能够使开发人员尽可能地利用现有的资源。C#让原本使用C++的开发人员效率变得更高,在C#编写程序的过程中,他们仍可以实现调用,所以优点被保留了下来。另一方面来说,开发人员能够非常迅速地适应C#这门语言,并不会感到不熟悉。 策略模式在软件设计中的应用(3):http://www.751com.cn/jisuanji/lunwen_37596.html