Skip to content

Latest commit

 

History

History

strategy

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 

Strategy 策略模式

例子: 出门,我们可以选择的交通工具如飞机,汽车,自行车等策略,略可以相互替换,最终的目地相同. 飞机 汽车 自行车等就是策略的抽象.

策略的实现

将策略的 定义 创建 使用 三部分解耦,使得每个部分可以独立,


定义: 定义策略的接口

创建: 创建具体的策略类 实现策略接口 一般使用Factory存储

使用: 根据运行时的状态来判断, 从工厂中获取具体的策略类进行调用


###具体的策略类在客户端使用时可以相互替换 ,使用策略的好处是可以去除if else等条件,避免硬编码

创建策略的过程中,如果对象是无状态的 可以创建成单例

如果对象是有状态的就需要每次创建新对象,此时如果使用if else 和new 的方式只不过只是将判断放到了创建的内层,我们可以使用反射+查表法来避免 反射+查表法 例子