gpt4 book ai didi

design-patterns - 您是否在具有闭包/委托(delegate)/函数指针的编程语言中使用模板方法模式?

转载 作者:行者123 更新时间:2023-12-04 07:19:23 24 4
gpt4 key购买 nike

在过去的 8 年里,我一直在 C# 和 Java 之间来回穿梭。

让我印象深刻的一件事是我已经完全停止在 C# 中使用“模板方法”设计模式。实际上,在 C# 中,我已经开始将这种模式视为一种反模式。

http://en.wikipedia.org/wiki/Template_method_pattern

回到 Java,我发现这种模式是活生生的。我仍然认为它看起来很古老,但意识到在 java 中没有其他方法可以做到这一点。 Java 看起来也很古老;)

既然这无论如何都会出现,为什么它是反模式?

  • 很多时候,它会因为“错误的原因”耗尽你的继承层次结构。
  • 基类倾向于散布各种不相关的代码。
  • 它迫使您锁定设计,通常是在开发过程的早期阶段。 (在很多情况下过早锁定)
  • 在以后的阶段改变这一点变得越来越难。

  • 因此,对于闭包/委托(delegate)/函数指针,您通常会传递一些函数而不是子类化。

    那么回到问题:

    如果您的语言有闭包/委托(delegate)/函数,您是否使用模板方法,何时使用?

    最佳答案

    在重新访问此线程时,我将再添加一个答案:

    当您自定义基础对象的策略需要相互了解并且仅在所有可能组合的非常有限的子集中才有意义时,模板方法模式比策略模式更好。例如,假设您的基类有一个具体函数 doIt() , 和 Hook beforeDoIt() ,旨在允许策略自行初始化和afterDoIt() ,旨在允许策略自行清理。您不想独立设置这些行为,因为它们只有在配对时才有意义。

    关于design-patterns - 您是否在具有闭包/委托(delegate)/函数指针的编程语言中使用模板方法模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/308460/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com