问题
Strage模式和template模式要解决的问题是一样的,都是为了给业务逻辑(算法)具体实现和抽象接口之间的解耦。Strategy模式将逻辑(算法)封装到一个类里面,通过组合的方式将具体的算法的实现在组合对象中实现,再通过委托的方式将抽象接口的实现委托给组合对象实现。State模式也有类似的功能。
结构图
Strategy Pattern这里的关键就是将算法的逻辑抽象接口(doAction)封装到一个类Context中,再通过委托的方式将具体的实现算法交由Strategy实现类来实现。
区别
Strategy 模式很 State 模式也有相似之处, 但是 State 模式注重的对象在不同的状态下不同的操作。 两者之间的区别就是State 模式中具体实现类中有一个指向 Context的引用,而 Strategy 模式则没有。具体分析请参看相应的 State 模式分析中。
网友评论