策略模式
1、简介
策略模式作为一种软件设计模式,指对象有某个行为,但是在不同的场景中,该行为有不同的实现算法。比如对于上班族来说,每周都会去公司上班,那么我们去公司的方式有多种多样,比如我们可以选择步行,骑单车,开车或者坐公交车等。再比如我们的高德导航系统,在提供导航服务的时候会根据客户需求的不同提供相应的导航策略,比如步行导航,开车导航等。下面看一个关于策略模式的类图
2、应用场景
应用场景:
1、 多个类只区别在表现行为不同,可以使用Strategy模式,在运行时动态选择具体要执行的行为。
2、 需要在不同情况下使用不同的策略(算法),或者策略还可能在未来用其它方式来实现。
3、 对客户隐藏具体策略(算法)的实现细节,彼此完全独立。
3、优缺点
优点
- 算法可以自由切换
- 避免使用多重条件判断(如果不用策略模式我们可能会使用多重条件语句,不利于维护)
- 扩展性良好,增加一个策略只需实现接口即可
缺点
- 策略类数量会增多,每个策略都是一个类,复用的可能性很小
- 所有的策略类都需要对外暴露
4、具体实现
下面就写一个简单的去公司上班的demo来加以说明
1.策略角色
/** * * 定义行为或者功能,在这里我的行为就是去公司,每个策略或算法必须具有的方法和属性 */ public abstract class Strategy { //去公司 abstract void gotoCompany(); }
2.上下文Context
/** * * Context上下文角色,或者Context封装角色,屏蔽高层模块对策略、算法的直接访问,封装可能存在的变化 */ public class Context { //持有策略的引用 pri.............原文转载:http://www.shaoqun.com/a/1450751.html
深圳天地人音乐会演出曲目一览:http://www.30bags.com/a/606283.html
深圳佳兆业儿童世界在哪里,怎么走?:http://www.30bags.com/a/617349.html
广东省干部疗养院温泉门票2021年9月价格:http://www.30bags.com/a/669394.html
ce认证是什么认证:https://m.ikjzd.com/articles/125303
upc:https://m.ikjzd.com/w/111
zappos:https://www.ikjzd.com/w/330
YesWelder打造DTC出海品牌实例:电商平台+独立站:http://www.kjdsnews.com/a/761430.html
老牌跨境电商平台eBay:http://www.kjdsnews.com/a/761431.html
拉美第二大玩具市场,墨西哥潜力有多大?:https://m.ikjzd.com/articles/153720
没有评论:
发表评论