策略模式

指的就是能够整体地替换算法。比方说我们要实现“猜拳”程序。我们可以考虑两种策略。一是“这局获胜,那么下一句也出一样的手势”,二是“根据上一局的手势从概率上推算出下一局的手势”。

几大roles

  • Strategy (策略)
  • ConcreteStrategy (具体的策略)
  • Context (上下文) 会使用到Strategy策略对象

UML图:

图片说明


通常在编程时算***被写在具体方法里,Strategy模式却特意将算法与其他部分分离开来,只是定义了与算法相关的接口API,然后在程序中以**委托**的方式来实现算法。 使用**委托这种弱关联关系可以方便地整体替换算法**。