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

Class 模板方法模式和使用抽象(基类)类之间的区别?,class,abstract,template-method-pattern,Class,Abstract,Template Method Pattern,经过几个小时的(重新)搜索,我无法解释普通抽象类和使用模板模式之间的区别 我唯一看到的是: 在使用抽象类时,需要实现所有方法。但在使用模板方法时,您只需实现这两个抽象方法 有人能给我解释一下模板模式的优点以及模板模式和抽象类之间的主要区别吗 p、 我只是想更好地了解这一点,以便我自己理解/学习 编辑: 感谢您的快速回复!但我会解释得更好一点(因为它已经走上了正确的道路:)。我知道什么是抽象类!(以及你必须实现哪些方法的类!),我知道模板模式的基本思想(一种在类中定义的过程算法的框架?)。我有点困

经过几个小时的(重新)搜索,我无法解释普通抽象类和使用模板模式之间的区别

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

有人能给我解释一下模板模式的优点以及模板模式和抽象类之间的主要区别吗

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

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

正如您所说,模板是一种模式。抽象类是一种特定于语言的构造,可用于实现模板。有些语言(例如Python或JavaScript)没有抽象类的概念,但这并不意味着不能用它们实现模板,只是需要使用不同的契约


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

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

将模板模式想象为抽象类的子集。这应该可以消除你的疑虑


因为没有更好的词,从技术上讲,没有区别。区别在于我们使用它的方式。

所以本质上的区别是:使用模板模式,您可以/必须实例化基类,并且您没有抽象类,只有两个抽象方法可以在子类中唯一实现?没有本质上的区别,因为它们的概念根本不同这是无法直接比较的。这就像问出租车和奔驰有什么区别。有使用梅赛德斯的出租车,但也有使用菲亚特,甚至人力车或船只的出租车。在Java中,模板模式可以实现为一个抽象类。但也不一定是这样。例如,许多Spring框架的模板类都是非抽象类。但是当它们是抽象的时,它们必须遵循java的抽象类规则(即实现所有方法或保留'abstract'关键字)。但是这两种实现都有某种优势吗?我明白你的意思了!抽象类可以“强制”模板方法模式实现,对吗?但它不必是抽象类。另一个(逻辑)区别是,抽象(类)是构造,模板是模式