浅析设计模式:策略模式(Strategy)

    先来看一个现实生活中的场景:

超市的顾客一般会有不同的等级,例如普通会员、黄金会员、钻石会员,不同等级的会员享受不同程度的折扣,随着顾客的消费金额累积,顾客的等级也将提升。这种场景下,要怎么使得不同的客户拥有不同的折扣策略,并且折扣策略还可以动态调整呢?策略模式就可以排上用场了!

什么是策略模式?

在编程中,不同的策略实际上可以理解成不同的算法,能够整体地替换算法,让我们轻松 的使用不同的算法解决同一个问题,这种模式就称为策略模式。

策略模式中的角色:

  • Strategy(策略):代表"算法"这一抽象角色,定义了实现策略所必需的接口(API)。
  • ConcreteStrategy(具体的策略):表示具体的算法,实现了Strategy中声明的方法,即提供策略的具体实现。
  • Context(上下文):负责使用Strategy角色,Context中保存了ConcreteStrategy角色的实例,并使用它去实现需求。

策略模式的类图:

接下来,我们使用策略模式来实现超市的会员策略 大笑

1、编写Strategy角色

Strategy是一个接口,声明了getPrice方法,由实现类提供具体实现。


2、编写不同会员的具体策略ConcreteStrategy


3、编写Context角色

在本案例中,Context角色就是顾客,由顾客自身来管理会员策略


4、编写测试程序



小结:

    策略模式算是最常用的设计模式之一,Context和Strategy之间是委托的弱关联关系,Context委托ConcreteStrategy实例去实现具体的策略。


Ending ...奋斗

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值