1. 秦子帅的博客首页
  2. Android

设计模式(11)-策略模式详解(易懂)

设计模式(11)-策略模式详解(易懂)

安卓干货铺
专注Android技术,坚持原创+博文分享
关注

策略模式的定义

策略模式比较简单,是指对一系列的算法定义,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。

模型:

设计模式(11)-策略模式详解(易懂)

  • Context:上下文角色,起到封装的作用,持有一个Strategy对象的引用

  • Strategy:策略角色(抽象)  通常为接口

  • ConcreteStrategy:具体的策略角色

实例说明

策略模式很好理解,这里拿百度网盘举例大家应该更明白了。比如现在的百度网盘普通的用户没有额外的空间,会员会额外的获得2T空间 ,而超级会员额外获得5T空间+各种福利。这也是一种策略,下面用代码演示一下:

1.Strategy,抽象的策略,也就是获取的额外的空间


2.ConcreteStrategy,也就是普通用户,会员,超级会员




3.Context,上下文,为了封装


4.调用:


运行结果:

设计模式(11)-策略模式详解(易懂)

策略模式的优缺点及其他

1.优点

  • 策略模式提供了管理相关的算法族的办法,算法可以切换

  • 避免使用多重条件转移语句

2.缺点

  • 客户端知道所有的策略类,并自行决定使用哪一个策略类。策略类完成暴露了

  • 策略类有时会非常多

3.适用场景

  • 多个类只区别在表现行为不同,可以使用Strategy模式,在运行时动态选择具体要执行的行为。

  • 需要在不同情况下使用不同的策略(算法),或者策略还可能在未来用其它方式来实现。

  • 对客户隐藏具体策略(算法)的实现细节,彼此完全独立。

强调:策略模式在Android中的应用比较典型是Adapter;另外还有策略枚举的应用大家感兴趣的可以自己看一下;具体的应用我会另外写一篇文章来讲。

定义和优缺点参考网上信息

设计模式(11)-策略模式详解(易懂)

大家可以直接加我的微信

设计模式(11)-策略模式详解(易懂)

推荐阅读:

设计模式(9)-责任链模式详解(易懂)

设计模式(10)-装饰模式详解(易懂)

设计模式(11)-策略模式详解(易懂)

设计模式(11)-策略模式详解(易懂)

原文始发于微信公众号( 秦子帅 ):设计模式(11)-策略模式详解(易懂)

发布者:秦子帅,转转请注明出处:http://qinzishuai.cn/index.php/2018/02/26/c11dd9f895/

联系我们

912241847

在线咨询:点击这里给我发消息

邮件:qzs531156@163.com

QR code