一,什么是策略模式
策略模式(Strategy Pattern)是一种常用的设计模式,属于行为型模式。它允许在运行时选择算法或操作的策略,通过定义一系列算法,并将每一个算法封装起来,使它们可以互相替换。策略模式让算法的变化独立于使用算法的客户端。
简单来说,策略模式是多态的一种体现,我个人认为不同与多态的点在于策略模式比多态多了一个“中转站”上下文这么一个东西。通过这个上下文,我们才能够灵活的实现具体业务中需要的哪一个策略,就调用哪个策略,摆脱多if的烦恼,所以它是一个很重要的角色。
主要组成部分
策略模式主要包含三个角色:
- Context(上下文):用来维护对当前选定策略对象的引用。
- Strategy(策略接口):定义所有支持的算法的公共接口。Context使用这个接口来调用某ConcreteStrategy定义的算法。
- ConcreteStrategy(具体策略):实现Strategy接口的类,提供具体的算法实现。
二,具体案例
先看一代码结构,这里的我单独拿出一个包,避免与其它业务类混在一起。
不多说,直接上代码。这里我需要通过产品ID和产品类型去查询卖家ID,因为产品类型的不同,那位我就需要根据传递的类型去做