【设计模式】--TEMPLATE METHOD 模式 和 STRATEGY 模式 :继承和委托

来源:互联网 发布:淘宝九块九在哪里 编辑:程序博客网 时间:2024/05/22 07:57

简介:

template method模式使用的是继承,把公用的方法抽象到1个抽象的基类中;子类去实现抽象的方法;

strategy 模式使用的是接口+组合,把公用的算法,放到runner (worker)类中;

UML见简图:

【ApplicationRunner(算法的聚合)】---->【《interface》 Application】<|-----【具体的实现类Sub】


strategy模式代价:涉及更多数量的类和简介层次。ApplicationRunner中委托指针的使用招致比继承多了一点运行时间和数据空间的开销。

                   好处:如果许多不同的应用程序要运行,就可以重用ApplicationRunner实例,并把不同的Application实现传递给它,

                             从而减小了通用算法和该算法所控制的具体细节之间的耦合。


委托的好处:实现接口的具体的实现类Sub,对ApplicationRunner一无所知,符合DIP规范。Sub还可以作为引用,使用到其他的ApplicationRunner,实现不同的算法。

                    具体的实现细节独立与高层的算法重用,运行每个具体的实现都可以被多个不同的通用算法操纵。

委托的代价:复杂性,内存,以及运行时间开销。

继承的代价:具体实现类对基类依赖,基类中包含着通用算法。具体类确定具体的算法也就确定了,不能再做扩展了。

阅读全文
0 0
原创粉丝点击