admin管理员组

文章数量:1530347

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

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

什么是策略模式?

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

策略模式中的角色:

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

策略模式的类图:

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

1、编写Strategy角色

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


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


3、编写Context角色

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


4、编写测试程序



小结:

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


Ending ...

本文标签: 模式策略Strategy