模板方法模式和使用抽象(基础)类之间的区别?

时间:2012-04-02 18:30:59

标签: class abstract template-method-pattern

经过几个小时(重新)搜索,我无法在普通的抽象类和模板模式的使用之间找到可解释的差异。

我唯一看到的是: 使用抽象类时,您需要实现所有方法。但是在使用模板方法时,您只需要实现这些抽象方法。

有人可以向我解释模板模式的(dis?)优势以及模板模式和抽象类之间的主要区别。

P.S。我只想更好地了解这一点,我自己的理解/研究

修改: 谢谢你的快速反应!但我会更好地解释它(因为它已经正确的方式:))。我知道抽象类是什么! (以及你必须实现哪些方法!),我知道模板模式的基本思想(一种在类中定义的过程算法的骨架?)。我有点困惑,因为他们看起来很像!我也不是英国人,所以我可能会监督一些事情! THNX提前

2 个答案:

答案 0 :(得分:2)

就像你说的,模板是一种模式。 Abstract Class是一种特定于语言的构造,可用于实现模板。有些语言(例如Python或JavaScript)没有抽象类的概念,但这并不意味着你不能在其中实现模板,只是你必须使用不同的契约。

在一种语言中使用抽象类的一个优点是,您可以在编译时强制执行所需的模板方法(合同)。在像JavaScript这样的语言中,合同不能强制执行,只能通过约定/文档来指定。

答案 1 :(得分:1)

抽象类是实现模板模式的一种方法。但这不是它的唯一用途。

想象一下模板模式作为抽象类的子集。这应该清除你的怀疑。

缺乏更好的词语,从技术上讲,没有区别。不同之处在于我们使用它的方式。