没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
Android编程设计模式之策略模式详解编程设计模式之策略模式详解
主要介绍了Android编程设计模式之策略模式,结合实例形式详细分析了Android策略模式的概念、原理、实现方
法及相关注意事项,需要的朋友可以参考下
本文实例讲述了Android编程设计模式之策略模式。分享给大家供大家参考,具体如下:
一、介绍一、介绍
在软件开发中也常常遇到这样的情况:实现某一个功能可以有多种算法或者策略,我们根据实际情况选择不同的算法或者策略
来完成该功能。例如,排序算法,可以使用插入排序、归并排序、冒泡排序等。
针对这种情况,一种常规的方法是将多种算法写在一个类中。例如,需要提供多种排序算法,可以将这些算法写到一个类中,
每一个方法对应一个具体的排序算法:当然,也可以将这些排序算法封装在一个统一的方法中,通过if…else…或者case等条
件判断语句来选择具体的算法。这两种实现方法我们都可以称为硬编码。然而,当很多个算法集中在一个类中时,这个类就会
变得臃肿,这个类的维护成本会变高,在维护时也更容易引发错误。如果我们需要增加一种新的排序算法,需要修改封装算法
类的源代码。这就明显违反了OCP原则和单一职责原则。
如果将这些算法或者策略抽象出来,提供一个统一的接口,不同的算法或者策略有不同的实现类,这样在程序客户端就可以通
过注入不同的实现对象来实现算法或者策略的动态替换,这种模式的可扩展性、可维护性也就更高,也就是我们本节要说的策
略模式。
简单来说就是,通常如果一个问题有多个解决方案时,最简单的就是利用if-else或者switch-case方式根据不同的情景选择不同
的解决方案,但是这样耦合性太高 、代码臃肿、难以维护等。这时就可以使用策略模式来解决。
二、定义二、定义
策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户
而独立变化。
三、使用场景三、使用场景
针对同一类型问题的多种处理方式,仅仅是具体行为有差别时
需要安全的封装多种同一类型的操作时
出现同一抽象类有多个子类,而又需要使用if-else或者switch-case来选择具体子类时
四、策略模式的四、策略模式的UML类图类图
UML类图:
Context:用来操作策略的上下文环境。
Stragety:策略的抽象。
ConcreteStrategyA、ConcreteStrategyB:具体的策略实现。
五、简单实现五、简单实现
需求:计算图书价格,初级会员没有折扣,中级会员打9折,高级会员打8折。如果一般写法,应该是if-else判断他是什么级别
的会员,在计算相应的折扣。下面使用策略模式来进行实现。
抽象折扣类:
资源评论
weixin_38520437
- 粉丝: 5
- 资源: 920
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功