美文网首页
设计模式之策略模式

设计模式之策略模式

作者: 超级大鸡腿 | 来源:发表于2018-11-15 16:30 被阅读0次

策略模式:它定义了算法家族,分别封装起来,可以让算法在不影响到客户端的情况下,使模式可以根据不同的场景进行对应的切换。

举个容易理解的栗子,像日常生活中,我们去超市又或者是某个网上商店购买商品,vip这种东西相信大家都不会陌生,当你没有vip是个普通顾客的时候结算的总额一般会跟有vip的顾客有区别,当然区别一边就是有vip的购买的比较便宜些。二者相同之处就是都是买东西,都需要结账,不同之处是,二者结算的计算方式会不一样。针对不同类型的顾客,我们的计算方式都会不一样,可以认为计算方式是一种算法,我们需要根据不同类型的顾客切换不同的算法去结算。

策略模式的大致组成结构:

1、环境上下文Context

上下文持有一个startegy的引用

2、策略对象

一般是抽象出算法的公共功能的接口或者抽象类。

3、具体策略对象

封装了具体的算法行为的对象

那么在具体实现上,大概如下:

环境上下文

策略对象

具体策略对象

策略模式的优点:

从上面的例子可以看出,上面一系列的算法在概念上来说,它们做的都是一种事情,就是计算结算信息,区别在于不一样的计算方式。使用策略模式,实现了以相同的方式调用所有的算法,减少了各种算法类与使用算法类(客户端)的之间的耦合。策略模式的一系列算法是可以相互替换的,平等的,避免了多重条件if...else if...else语句,便于维护。

策略模式的缺点:

客户端必须理解知道所有的策略类,才能决定要选用那种策略合适。策略类越多,对象的数量也就越多。

相关文章

  • PHP设计模式之策略模式

    PHP设计模式之策略模式

  • PHP设计模式之策略模式

    PHP设计模式之策略模式

  • 简说设计模式之策略模式

    前言:对于设计模式基础概念可以去看[简说设计模式之设计模式概述] 一、什么是策略模式 策略(Strategy)模式...

  • 策略模式

    参考资料:漫话:如何给女朋友解释什么是策略模式? 设计模式之策略模式(实例+Demo) Java设计模式(8)——...

  • 学习Head First设计模式Day1

    Java设计模式之设计模式 策略模式:策略模式定义了算法簇,分别封装起来,让他们之间可以互相替换,此设计模式让算法...

  • 策略模式 2018-11-04

    设计模式之策略模式 官方说明设计模式的3个角色: 环境角色:context , 持有一个策略的引用 抽象策略角色,...

  • Java设计模式——策略模式

    Java设计模式之策略模式 这期分享的模式是策略模式是程序设计中最常用的了,因为开发工作中总是会使用到策略模式。 ...

  • 策略模式

    本文参考自: 《JAVA设计模式》之策略模式(Strategy) 1. 作用 策略模式属于对象的行为模式。其用意是...

  • 设计模式(Swift) - 单例模式、备忘录模式和策略模式

    设计模式(Swift) - 单例模式、备忘录模式和策略模式 设计模式(Swift) - 单例模式、备忘录模式和策略模式

  • 设计模式之策略模式总结

    再上一篇文章《设计模式之策略模式》中,我们通过模拟鸭子项目,了解了什么是策略模式,怎么使用策略模式。本文将通过鸭子...

网友评论

      本文标题:设计模式之策略模式

      本文链接:https://www.haomeiwen.com/subject/vdwyfqtx.html