很抱歉提出这样一个本地化的问题,但在我得到确认之前,我对继续我的项目没有信心。
我已经阅读了很多关于模板模式的内容,维基百科有一个很好的例子。
它表明您创建了基本的虚拟方法,然后继承了基类并覆盖了您想要的位置。该网站上的示例适用于都继承基类的 Monopoly 和 Chess。
所以,我的问题是,如果你的应用程序只是国际象棋而不是其他任何东西,那么使用模板模式(除了作为教育练习之外)会有什么好处吗?
很抱歉提出这样一个本地化的问题,但在我得到确认之前,我对继续我的项目没有信心。
我已经阅读了很多关于模板模式的内容,维基百科有一个很好的例子。
它表明您创建了基本的虚拟方法,然后继承了基类并覆盖了您想要的位置。该网站上的示例适用于都继承基类的 Monopoly 和 Chess。
所以,我的问题是,如果你的应用程序只是国际象棋而不是其他任何东西,那么使用模板模式(除了作为教育练习之外)会有什么好处吗?
不,我认为这属于“你不需要它”的范畴。
更具体地说,存在设计模式来解决特定问题,如果您的代码不需要解决该问题,它们所做的只是添加代码行而没有任何好处。
不。以非常简化和肤浅的方式表达,模板模式只是值得从总代码大小和模板化代码大小之间的某种关系开始。在您的示例中,国际象棋游戏将是整个程序,因此此处无需使用模板模式。
模板模式用于特定情况。当您想草拟一个算法但让具体步骤有所不同时,可以使用它。
这在国际象棋应用程序中可能很有用。但是,您不应该以“我将使用这个模式和那个模式,然后......”的想法开始开发应用程序。相反,您开发代码并发现您需要某些模式。
这就是测试驱动开发方法非常方便的地方。它允许您在每个步骤中重构代码。
一本解释这一点的好书是Refactoring To Patterns。
我建议编写您的国际象棋游戏,然后如果将来回来并改变事物以适应垄断。但是如果你想使用模式来学习模式,那就完全不同了,在这种情况下,最好从简单开始,这样复杂就更容易理解。
这实际上取决于程序的各个部分。Template 的整个想法是拥有一个永不改变的算法,并且能够添加或编辑该算法的某些步骤。
很可能你永远不会改变,然而,这是设计原则的问题,这是一种很好的做法,你以后可能希望你已经实现了它们。我想说的是,如果您 100% 确定,那么您可以将其省略,因为它通常可以节省时间和代码行数。取决于你是否想学习模板的使用。
GOF 原则网站也很不错: