Иногда люди ссылаются на шаблоны проектирования как на недостающие возможности языка программирования. Чтобы избежать споров о том, что такое шаблон дизайна, скажем, мы рассматриваем только оригинальные шаблоны GoF. Например, шаблон Singleton исчезает в Scala, который поддерживает одноэлементные объекты, используя ключевое слово object
.Дизайн шаблона как (отсутствует) язык
Существует немного ресурсов вокруг этого, в частности Are Design Patterns Missing Language Features из вики C2, или Are design patterns really language weaknesses? от SO. Но я не мог найти беспристрастное, объективное и всестороннее освещение этого вопроса.
В идеале, мне нужна матрица с шаблонами проектирования (строки) GoF и некоторыми основными языками программирования (столбцами), где каждая ячейка будет ссылаться на обсуждение шаблона на конкретном языке программирования.
Чтобы избежать споров о том, что PL рассмотреть, мы также можем исправить это и выбрать: Java (как статически типизированный представитель OO), Smalltalk (как динамически типизированный представитель), Haskell (как функциональный представитель), Scala (как гибридный оо/функциональный представитель), Lisp (как представитель метапрограммирования), JavaScript (как представитель на основе прототипов). И оставить другие PL для боковых заметок или комментариев. Я знаю, что мы можем спорить об этом выборе, но это уже было бы очень интересно иметь это для этих языков.
Это всегда будет открытым вопросом, но я чувствую, что его спрашивают как есть, это достаточно сфокусировано, чтобы иметь один лучший ответ.
Возможно, эта матрица уже существует где-то? Или у кого-то есть достаточно знаний, чтобы справиться с этим? Или кто-то достаточно увлечен, чтобы начать и сделать это вики-ответ, чтобы другие могли продолжить?
Вместо того, чтобы просить открытый состав, субъективный вопрос о SO, почему вы не просто написать пост в блоге и развивать его, как вы найдете новые реализации шаблона? – slugster
На это вряд ли найдется один лучший ответ. Я проголосовал за вики сообщества. –
@slugster Моя идея - действительно написать такое сообщение в блоге (или мой друг будет делать), и возникает вопрос о сборе ссылки на лучшие обсуждения конкретного шаблона w.r.t на данный язык. Затем я могу скомпилировать это в запись в блоге. Тем временем я, вероятно, также отвечу на свой вопрос и нарисую проект матрицы. – ewernli