一、定义
策略模式(Strategy Pattern)
针对一组算法,将每一个算法封装到具有共同接口的独立类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。
二、分析
-
策略模式主要针对的是一组可以相互替换的算法,我们单独把这些算法封装起来,让他们实现同一个接口,在使用策略时传入实现的接口类,这样我们删除和添加策略时就不用修改到客户端。
-
在策略模式中,策略是由客户端决定的,这要求这些可以替换的策略必须是公开的,客户端也需要知道具体有哪些策略。
-
策略模式和状态模式原理一致,只是他们的注重点不同,状态模式主要是切换状态以达到执行不同的行为,而策略模式则是针对一组可以替换的算法。
-
如果在一个类中,某个行为存在多种实现的方式,并且这些方式可以相互替换,这时我们就可以使用策略模式。
三、类图
四、使用场景
-
系统需要动态的在几种算法中选择一种;
-
类中使用了复杂条件运算符以在同一算法的不同变体中切换;
-
如果算法在上下文的逻辑中不是特别重要,使用该模式能将类的业务逻辑与其算法实现细节隔离开来。
五、代码实现
我们在买房时需要在进行贷款,银行一般有2种还款方式分别是 等额本息
和等额本金
,我们可以根据实际需求选择还款的方法。
下面我们使用策略模式来模拟这两种还款方式。