定义:它定义了算法家族,分别封装起来,让他们之间可以相互替换,此模式让算法的变化,不会影响到使用算法的客户。
1.抽象父类:抽象算法方法。
2.具体算法子类:封装了具体的算法或行为,继承抽象父类。
3.Context类:在类里定义一个成员变量,维护一个对策略对象的引用。并提供一个上下文接口方法,根据具体的策略对象,调用其算法的方法。
4.客户端通过new Context(传入不同的具体算法子类)。由于实例化不同的策略子类,所以最终调用上下文接口方法时调用的是不同具体算法子类的方法。
5.可以在传入new Context(子类)的时候传入字符串而不是传入子类,在Context类中通过判断字符串new出不同的子类来赋值确定调用的是哪个算法子类(目的是使客户端调用时减少类的认识,降低耦合)。