设计模式学习资料:(1)https://refactoringguru.cn/design-patterns/
1、策略模式
1.1 what? 策略模式是行为模式,意味着是对对象间交互行为的抽象。其将对某一问题的多种算法封装到各自的类,统一以相同的接口对外提供服务。
1.2 why? 清晰代码架构,解耦算法使用与算法实现,方便算法的增删及修改。
1.3 how?策略模式实现方式:
(1)定义策略类接口即接口内方法,实现该策略接口的抽象类抽象出通用的过程代码,子类继承抽象类,实现每个子类独特的策略处理代码。
(2)策略的使用:策略使用方式一般由另一单独的类对外提供服务,这里一般要伴随着策略的选择与生成。具体策略的选择由使用者的状态最终决定。通常实现方式是if else堆叠,策略很多时,则代码结构性、可读性、可维护性会变差。可将使用者可能存在的状态进行定义,并预先关联好使用者状态与具体策略间的关系,如使用map结构;若策略的执行需要由策略类的实例来执行,一般需要借助工厂类来屏蔽对象的生成细节,解耦对象的使用与生成,在工厂类中完成重复创建或单例的实现细节。
1.4 策略模式与状态模式的区别
策略模式关注的是对算法的封装与使用,类似于输入-选择-输出的过程。而状态模式则关注的是对象的不同状态,以及状态间的扭转过程