码迷,mamicode.com
首页 > 其他好文 > 详细

策略模式

时间:2015-05-15 01:09:33      阅读:330      评论:0      收藏:0      [点我收藏+]

标签:

1.背景

    假设你是图书商场的管理员,现在商场要对图书进行降价促销,要求你根据以下规则来为所有参加促销的图书标上价格:

    1.地理类图书如果出版社为工业那么都降价10%,其它价格在100元以上的降价20元,在100以下的降价12元。

    2.计算机类图书降价13元i

   ......

  那么当你图书进行标价的时候,就会据该图书的类型,价格去选择不同的折扣规则,也就是根据当前环境(图书的类型,价格,出版社)的不同,选择不同的业务算法(各种折扣规则)来处理。对于这种况可以采用策略模式来设计你的代码。

2.策略模式是什么?

   策略模式是一种行为模式,是对算法的封装,把算法的使用和算法本身分割开,并委托个不同的类。 简单点,准备一组算法,并把每个算法封装起来,在她们之间可以互换。其UML图如下:

 

 

  技术分享

3.策略模式的优缺点

  3.1 优点: 

      a.对算法进行了封装,如果以后有新的算法,只要对新算法进行封装,不必改变以前的代码就行了;

      b.把选择算法的责任和算法本身分割开了;

      c.使用者能够随时在算法之间进行切换;

  3.2 缺点

      a.由于选择算法的责任在使用者角色里,那使用者角色必须知道所有的算法,才能进行选择。

      b.使用者只能选择一种算法,不能选择多种算法。

      c.如果多个使用者在使用同一个算法,那么就会创建多个该算法的实例对象,增加了内存的消耗(可以通过享元模式来解决)。

 4.应用建议

   a.如果多个类,它们的属性相同,只是行为不同,比如例子中的图书的折扣(有很多种图书,它们都有相同的原价,但它们有不同的打折行为)

   b.一个类可以动态的选择行为

  c.在具有多重条件语句时可以考虑用策略模式

策略模式

标签:

原文地址:http://www.cnblogs.com/eyyzx678/p/4502321.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!