Как организовать типы функций , а не отдельные функции могут быть ключевыми для отделения «шаблонов проектирования» от «алгоритмов» ...
Шаблоны проектирования описывают общие решения общих проблем проектирования.
«Каждый шаблон описывает проблему, которая возникает снова и снова в нашей среде, а затем описывает ядро решения этой проблемы таким образом, что вы можете использовать это решение миллион раз, даже не делая его одинаково. дважды "( Кристофер Александр ). В программировании это делается путем описания определенных наборов отношений между программными объектами (вместо концептуальных или реальных объектов). Следует избегать описания конкретной реализации, поскольку это делает шаблон проектирования менее универсальным.
Алгоритм - это набор шагов, которые определяют, как выполняется задача. Выполнение каждого шага в алгоритме не требует творческих навыков. Скорее, это требует только умения следовать указаниям. (предупреждение: недетерминированные алгоритмы не соответствуют этому ограничению и являются важной темой исследования)
Итак, я думаю, что одним из описаний отношений может быть отделение функций от функций. Тем не менее, совокупность признаков объекта будет определять его функцию, поскольку каждая подфункция имеет функции, инкапсулированные в нем. Когда вы объединяете много маленьких объектов в один больший объект (например, экземпляры разных классов в программе), некоторые из них будут работать вместе, чтобы создать новые функции, которых у них не было (само целое больше, чем сумма его частей ). Вы можете сказать, что это просто новый алгоритм, но это также новый объект. Особенности и функции - две стороны одной медали, поэтому невозможно полностью отделить их. Но то, как организовать типы функций , а не конкретные функции, может быть ключевым для отделения «шаблонов проектирования» от «алгоритмов», поскольку, если шаблоны проектирования предназначены для организации конкретных функций, то есть экземпляров определенных классов, алгоритм будет уже были представлены, и реализация будет всегда одинаковой, то есть она не будет общей, и вы не сможете «использовать это решение миллион раз, даже не делая его одинаково дважды».