Действительно ли Шаблоны разработки характерны для Языка или Технологии?

Вопрос здесь, шаблоны разработки, характерные для языка программирования или технологии,

Как Вы может сделать составной шаблон только в C#, Java, но не в VB6.0. Это верное, Если да, что, что является шаблоном, который не может быть реализован с объектно-ориентированными языками программирования.

9
задан Mohit 26 March 2010 в 22:24
поделиться

9 ответов

Среди классических шаблонов «Банда четырех» немало зависит от языка. Другие, такие как Visitor, действительно полезны только в объектно-ориентированной среде. Функциональный язык имеет фолд (катаморфизмы) вместо посетителя, и любой, кто пытается использовать посетителя на функциональном языке, будет рассматриваться как опасный сумасшедший. Наконец, есть шаблоны, которые можно применять на любом языке, например Factory.

Одна из причин, по которой я не являюсь большим поклонником движения паттернов, практикуемого Гаммой и др., Заключается в том, что представлению о паттернах не хватает интеллектуальной согласованности. «Что-нибудь полезное» - хорошее заявление, но, как вы заметили, не дает подробных указаний относительно того, какие шаблоны могут по-прежнему быть полезными при изменении языка или парадигмы.

Чтобы проиллюстрировать риски, связанные с классификацией паттернов, посмотрите одну из моих любимых коллекций: Кент Бек Smalltalk Best Practice Patterns . Несмотря на работу "Smalltalk" в названии, многие программисты сочли эти шаблоны применимыми и к таким языкам, как Java и Python.

6
ответ дан 4 December 2019 в 13:01
поделиться

Шаблоны проектирования не являются специфичными для языка сами по себе, однако некоторые шаблоны могут быть специфичными для парадигмы, например, реализация одноэлементного шаблона в C не имеет смысла, так как вы могли бы просто написать простой старый модуль.

Однако шаблоны проектирования не зависят от языка, но могут быть более полезными или иметь больше смысла в разных парадигмах (объектно-ориентированный, структурированный или функциональный).

3
ответ дан 4 December 2019 в 13:01
поделиться

Это простой ответ.

С одной стороны, некоторые шаблоны зависят от языка, такие шаблоны, как Factory, Strategy и Template, полагаются на языковые механизмы, такие как полиморфизм и наследование.

С другой стороны, некоторые шаблоны существуют потому, что язык, который мы используем, не имеет нужной функциональности (пример: шаблон посетителя используется для компенсации отсутствия двойной отправки в таких языках, как Java и C ++).

0
ответ дан 4 December 2019 в 13:01
поделиться

Шаблоны проектирования не зависят от языка по своей сути, хотя некоторые шаблоны более полезны для одних языков, чем для других.

0
ответ дан 4 December 2019 в 13:01
поделиться

Большинство шаблонов не зависят от языка. Для некоторых шаблонов и языков требуется серьезное хакерство. Например, Windows COM - это причудливая реализация составного шаблона на языке C (не C ++).

Некоторые языки, такие как VB 6.0, создают серьезные препятствия, которые необходимо преодолеть, чтобы реализовать некоторые шаблоны, поэтому они не стоят затраченных усилий.

0
ответ дан 4 December 2019 в 13:01
поделиться

Да и нет. Некоторые шаблоны проектирования не относятся к конкретным языкам, но могут быть шаблоны проектирования, специфичные для классов языков.

Например, могут быть функциональные шаблоны проектирования, специфичные для функциональных языков, или шаблоны объектно-ориентированного проектирования, специфичные для объектно-ориентированных языков. Некоторое совпадение может существовать, но оно не 100%.

0
ответ дан 4 December 2019 в 13:01
поделиться

Я думаю, что это больше зависит от того, какие языковые функции вам доступны, но нет, я бы не сказал, что шаблоны проектирования ограничены определенными языками.

3
ответ дан 4 December 2019 в 13:01
поделиться

Шаблоны зависят от языков программирования, хотя и не так сильно, как предполагает ваш вопрос. Например, Iterator - это шаблон проектирования, однако во многих языках (C ++, Java, C #) он является частью языка (ОК, библиотека классов).

Есть несколько шаблонов, которые можно назвать объектно-ориентированными, т.е. их сложно реализовать без надлежащих классов, наследования и полиморфизма. Примеры: абстрактная фабрика, стратегия, шаблонный метод. Однако даже это можно сделать, например, C, если уж кому-то захотелось. Это возможно, потому что C имеет указатели на функции. Однако мне было бы очень трудно представить реализацию вышеуказанных шаблонов на языке, отличном от объектно-ориентированного программирования, без поддержки указателей (или эквивалента). С другой стороны, я полагаю, что эти шаблоны в любом случае не имели бы смысла на таком языке ...

4
ответ дан 4 December 2019 в 13:01
поделиться

Нет, это не так. Это абстракция, которую можно применить к объектно-ориентированным языкам в целом.

0
ответ дан 4 December 2019 в 13:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: