继承
program by difference.
通过继承,可以建立完整的软件结构分层.其中每一层都可以重用该层次以上的Code.
过度使用继承的代价是巨大的.应使用组合或者委托来替代继承.
Template
Method(使用继承)和Strategy(使用委托)模式解决了相同的问题:分离通用的算法和具体的上下文(DIP).
Template Method模式.
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnL2MzM5EDM3UTMxAjMyITOwgTMwIzLcVDM0EDMy8CXvZmbp9CXt92YuUGZvNWatFWbuU2Zh1Wavw1LcpDc0RHaiojIsJye.png)
Strategy模式
Template Method模式允许一个通用算法操纵多个可能的具体实现.
而完全遵循DIP的Strategy模式,允许每一个具体实现都可以被多个不同的通用算法操纵.
总结.两者都用来分离高层算法和底层的具体实现.都允许高层算法独立于它的具体实现细节.
Strategy模式也允许具体实现细节独立于高层算法的重用.
[Agile Software Development(Principles,Patterns,and Pracitices)]