2022年1月18日星期二

浅谈23种设计模式之策略设计模式

策略模式

1、简介

策略模式作为一种软件设计模式,指对象有某个行为,但是在不同的场景中,该行为有不同的实现算法。比如对于上班族来说,每周都会去公司上班,那么我们去公司的方式有多种多样,比如我们可以选择步行,骑单车,开车或者坐公交车等。再比如我们的高德导航系统,在提供导航服务的时候会根据客户需求的不同提供相应的导航策略,比如步行导航,开车导航等。下面看一个关于策略模式的类图

image

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

没有评论:

发表评论