策略模式和模板模式两者都是多态的体现,其具体的讲解可参考这位大神的文章,将的很具体。
策略:https://www.cnblogs.com/jiese/p/3181099.html
模板:https://www.cnblogs.com/jiese/p/3180477.html
模板模式:定义一个算法流程的骨架,把一些可变节点延迟到具体的子类中去执行 策略模式策略模式:将某个类的核心算法提取出来、封装,使得对象在针对不同的情境可以方便地更换执行策略(算法),使得算法独立变化而不影响客户端的使用。有一个Context的类,这个类聚合了Strategy类,在实际的使用过程中Context可根据Strategy指向的不同而调用不同的ConcreteStrategy,执行不同的功能。更体现的是一种组合的意思。
其实两者没有太多的区别,非要说区别的话可以总结一下几点:
可变节点:模板模式可变节点大于等于一;策略模式被重载的节点一般唯一;
重载侧重点:模板模式要求算法流程中的某几个节点会被替换,但顺序不变;策略模式中整个算法都是可以被替换的。