design-patterns - 模板方法和策略模式有什么区别?

标签 design-patterns strategy-pattern template-method-pattern

有人可以向我解释一下模板方法模式和策略模式有什么区别吗?

据我所知,它们 99% 相同 - 唯一的区别是 模板方法模式有一个抽象类作为基础 类,而策略类使用已实现的接口(interface) 按每个具体策略类别。

但是,就客户而言,它们的消费方式完全相同 - 这是正确的吗?

最佳答案

当特定操作具有一些可以根据其他变化的原始行为定义的不变行为时,使用模板模式。抽象类定义不变的行为,而实现类定义依赖方法。

在策略中,行为实现是独立的——每个实现类都定义行为,并且它们之间没有共享代码。两者都是行为模式,因此客户的消费方式大致相同。通常策略有一个公共(public)方法——execute()方法,而模板可以定义一组公共(public)方法以及一组子类必须实现的支持私有(private)原语。

这两种模式可以很容易地一起使用。您可能有一个策略模式,其中多个实现属于使用模板模式实现的策略系列。

关于design-patterns - 模板方法和策略模式有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/669271/

相关文章:

java - 我们在 Spring 中使用 Prototype 范围的实际业务场景?

html - 显示非常宽的表格的策略

Android:发送状态的最佳方式是什么?

c++ - 在没有指针的情况下在 C++ 中实现策略模式

java - 对策略设计模式感到困惑

Java模板方法模式

c# - 模板方法模式——防止在派生类中直接调用方法

java - 当两个线程同时调用 "getInstance()"时,Singleton 的行为如何?

design-patterns - 有人可以向我展示使用方案的策略模式的简单示例吗?

c# - 每个实现都需要不同参数的模板方法模式?