Полиморфизм в шаблоне проектирования - PullRequest
1 голос
/ 25 октября 2010

Я заметил, что большинство шаблонов проектирования (я имею в виду в основном из книги «Банды четырех») основаны на полиморфизме.Это подводит меня к «просвещенному» моменту, когда полиморфизм ООП является наиболее важной особенностью в парадигме.

Некоторые из моделей, использующих полиморфизм: стратегия, фабрика, мост ...

Счто, я не понимаю, почему мы не просто учим разработчиков действительно хорошему полиморфному поведению ООП, а не перегружаем их набором паттернов, которые на самом деле основаны на полиморфизме?

Ответы [ 6 ]

1 голос
/ 25 октября 2010

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

Я не думаю, что есть проблема с именами и обучением более детальным / зависимым шаблонам, это действительно помогает в общении. Но, как вы предполагаете, прежде чем разработчик сможет эффективно реализовать какой-либо из зависимых шаблонов, необходимо твердое понимание полиморфизма.

0 голосов
/ 25 октября 2010

@ Игнасио Васкес-Абрамс Я не думаю, что типирование утки, интерфейс и абстрактный класс - это разные интерпретации полиморфизма.Если реализация не может быть определена во время компиляции и должна быть определена во время выполнения, это полиморфизм.Вы можете назвать эту концепцию как угодно, в конце концов, это определение полиморфизма.Это придумано позднее / динамическое связывание, хотя и по тому же принципу.

0 голосов
/ 25 октября 2010

Это красная сельдь. Некоторые языки реализуют это как полиморфизм.Другие могут реализовать это как интерфейсы.Тем не менее другие могут использовать утку.Принуждение читателей / студентов к мысли «полиморфизм» на самом деле не помогает во всех ситуациях, и при этом также не обучаются двум другим механизмам, которые существуют не на каждом языке.В этот момент он становится шумом.

0 голосов
/ 25 октября 2010

Потому что, хотя полиморфизм используется для реализации шаблонов в языках OO , но шаблоны могут быть реализованы без него (например, представьте реализацию фабрики в C).

Кроме того, шаблоны проектирования, подобно полиморфизму, являются инструментами, которые помогают разработчикам решать проблемы. Только изучение подмножества инструментов (например, только полиморфизма) поставит разработчиков в невыгодное положение, поскольку им нужно будет «работать с первых принципов» (так сказать) вместо того, чтобы основывать свою работу (и свою мысль) на концепциях более высокого уровня ( как шаблоны дизайна).

0 голосов
/ 25 октября 2010

Каждый язык имеет свои особенности, которые являются «убийственными чертами» всей концепции.ООП, будучи одной из самых больших и старейших ветвей продвинутых языков, обладает полиморфизмом, но я могу указать на другие удивительные особенности, такие как сильное функциональное программирование, замыкания, параллельное выполнение и другие уникальные вещи, для других языков, которые имеют те же самые удивительные черты.- мощные функции, которые просто необходимы.
Обучение только одному методу быстро превращает вас в пони.Прочный фундамент в теории позволяет вам выбрать очень «другой» язык, такой как Лисп или Эрланг, и знать, что происходит.

0 голосов
/ 25 октября 2010

Не был бы

действительно хорошее полиморфное поведение

на самом деле быть как применять паттерны Банды четырех хорошим способом?

Как применить стратегию как инструмент, чтобы не нарушать, например, SRP .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...