2

经过几个小时的(重新)搜索,我只是想不出普通抽象类和使用模板模式之间的可解释差异。

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

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

ps我只是想更好地了解这一点,以便我自己的理解/学习

编辑:感谢您的快速回复!但我会更好地解释它(因为它已经走对了:))。我知道什么是抽象类!(以及必须实现哪些方法的类!),并且我知道模板模式的基本思想(一种在类中定义的过程算法的骨架?)。我有点困惑,因为它们看起来很像!另外我不是英语,所以我有可能监督一些事情!提前 THNX

4

2 回答 2

2

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

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

于 2012-04-02T18:35:32.107 回答
1

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

将模板模式想象为抽象类的子集。那应该可以消除您的疑问。

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

于 2016-03-30T04:18:43.040 回答