策略模式之我见

---------------------- android培训java培训、期待与您交流! ----------------------    谈论该模式之前我想先说说自己对类的理解:类是一个抽象体,他封装了一大类个体的共同属性和行为,类的建立是以抽象为基础的,而抽象是建立在个体的属性和行为之上的,先有了个体然后才有了以多个个体为基础抽象出来的类。
   策略模式:它定义了一个算法家族,将各个算法封装起来,让他们之间可以相互替换,此模式让算法的变化不会影响到客户端。(该定义引自《大话设计模式》)
   我对该模式的定义理解如下:所谓算法是指为达到一定的目的而采取的做事方法,为做成一件事情不同的人采取的算法(策略或方法)不同,但他们最终实现的结果是相同的,对于利用这些结果的客户来说那些不同的算法是可忽略的,定义中的”算法家族”其实就是一个建立在不同算法之上的类,它是算法的抽象。策略模式的具体做法是第一步抽象出一个算法类,它包含了为完成一件事情的所有算法的共同属性和行为,第二步利用继承的特性产生出各种不同的算法子类,第三步利用多态的特性产生一个与客户端直接打交道的类,第四步利用第三步产生的类直接在客户端进行逻辑判断对具体算法进行选择(可以结合使用简单工厂模式将客户端的逻辑判断移除,这样做更合理些)。当对具体的算法进行修改或增加时只需要修改或增加子类算法即可而客户端代码可以不需改动(这也是为什么定义中说“让算法的变化不会影响到客户端”的原因)。
    从上面的理解来看策略模式是建立在继承和多态的基础上的,他的好处就是封装了各种不同算法(即变化部分)降低了算法类和使用算法类之间的耦合度,同时有助於单元测试的简化。
   在具体应用中只要听到在不同的时间需要不同的业务规则就可以利用该模式处理变化。---------------------- android培训java培训、期待与您交流! ----------------------
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章