如何组织特征类型而不是特定特征可能是将“设计模式”与“算法”分开的关键......
设计模式描述了常见设计问题的通用解决方案。“每个模式都描述了一个在我们的环境中反复出现的问题,然后描述了该问题解决方案的核心,以这样一种方式,您可以使用该解决方案一百万次,而无需以相同的方式使用它两次”(克里斯托弗亚历山大)在编程中,这是通过描述软件对象之间的特定关系集来完成的(代表概念或现实世界的对象)。应该避免描述具体的实现,因为它会降低设计模式的通用性。
算法是一组定义如何执行任务的步骤。算法中每个步骤的执行不需要创造性技能。相反,它只需要遵循指示的能力。(警告:非确定性算法,不符合这个限制,是一个重要的研究课题)
因此,我认为对这种关系的一种描述可能是将功能与功能分开。然而,一个对象的特征集合将决定它的功能,因为每个子特征都有封装在其中的功能。当您将许多小对象组合成一个更大的对象(例如,将不同类的实例放入程序中)时,其中一些将协同工作以创建它们自己没有的新功能(整体大于其部分的总和) )。你可以说这只是一个新算法,但它也是一个新对象。特性和功能是同一枚硬币的两个方面,不可能完全分开。但是如何组织特征类型而不是特定功能可能是将“设计模式”与“算法”区分开来的关键,因为如果设计模式是关于组织特定功能,即特定类的实例,那么算法将已经被呈现并且实现将完全相同时间,即它不会是通用的,你不能“使用这个解决方案一百万次,而不是以同样的方式做两次”。