有人可以向我解释一下模板方法模式和策略模式有什么区别吗?
据我所知,它们 99% 相同 - 唯一的区别是 模板方法模式有一个抽象类作为基础 类,而策略类使用已实现的接口(interface) 按每个具体策略类别。
但是,就客户而言,它们的消费方式完全相同 - 这是正确的吗?
最佳答案
当特定操作具有一些可以根据其他变化的原始行为定义的不变行为时,使用模板模式。抽象类定义不变的行为,而实现类定义依赖方法。
在策略中,行为实现是独立的——每个实现类都定义行为,并且它们之间没有共享代码。两者都是行为模式,因此客户的消费方式大致相同。通常策略有一个公共(public)方法——execute()
方法,而模板可以定义一组公共(public)方法以及一组子类必须实现的支持私有(private)原语。
这两种模式可以很容易地一起使用。您可能有一个策略模式,其中多个实现属于使用模板模式实现的策略系列。
关于design-patterns - 模板方法和策略模式有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/669271/