@forven

Как понять/освоить паттерны проектирования?

Как понять паттерны проектирования?
Я совершенно не понимаю их, не могу представить принцип их работы у себя в голове, как они работают и зачем.
А ведь на вакансию джуниора требуют в большинстве случаев знание/понимание паттернов.
Может я чайник, и программирование это не моё?
  • Вопрос задан
  • 3250 просмотров
Пригласить эксперта
Ответы на вопрос 4
@Got_Oxidus
Учусь
Может я чайник, и программирование это не моё?

Если вы добрались до этой темы, то программирование это ваше, просто подошли к проблеме не с той стороны)

Паттерн - это шаблон, отношение классов, решающий определённую задачу.

Почитайте Паттерны проектирования .NET. Большинство популярных паттернов подробно разобраны. (Подходят и для Java)
Ответ написан
saboteur_kiev
@saboteur_kiev
software engineer
Паттерны - это терминология для определенных наборов решений.

Представьте, что вы решаете какую-то задачу. Ну например в игрушке программируете набор заклинаний, которые может сколдовать игрок.
При этом составляете таблицу (или массив), в одном столбце - сколько маны тратит заклинание, в другом - каким классам оно доступно, в третьем - оно бьет по врагу, по другу или по площади, в четвертом - какое-то дополнительное условие, например заклинание может колдоваться только днем.
Потом хотите усложнить, добавляете еще условие, например только во время грозы.
Потом усложняете еще, что его может колдовать только если не голоден.
Потом, через 10 новых заклинаний, которые вносят в вашу игру уникальность и разнообразие эффектов, вы понимаете, что в таблице у вас есть 10=15 столбцов, в которых true стоит только напротив одного заклинания, и вы думаете, как бы это все упростить.
Да, можно перейти на биты, но это не меняет того, что вы храните список эффектов, проверка на который используется только один раз, а if/case у вас уже несколько страниц.

Потом вы придумываете, что можно сделать столбец, в котором указывать не очередной параметр, а вызывать уникальную функцию, внутри которой можно проверять разные уникальные эффекты, и таблица снова сокращается до 5-6 столбцов. Решение - крайне удобное для вашего случая - вы можете легко придумать совершенно уникальные проверки условий, и их будет легко интегрировать.
Вот, вы использовали паттерн executor.

Это не конкретный код, и не язык, это просто вариант решения задачи, не всегда даже алгоритм, а сама идея.

Собственно паттерны - это и есть варианты, идеи для решения каких-либо задач.
Популярные паттерны могут быть хорошо и тщательно расписаны, с примерами кода.
Более редкие могут иметь свое название в небольшом кругу программистов, и не всегда попасть в стандарты.

Но зная как минимум популярные паттерны - вы просто сможете решать популярные задачи быстрее, использовать best practice, реже наступать на грабли и общаться с коллегами удобной терминологией, которая сократит время на объяснение.
Ответ написан
fedorez
@fedorez
Хатуль мадан
Книжку от Head First почитайте для начала. Если не идёт более академичное чтиво.
Ответ написан
Комментировать
Просто выучи и все.
На практике возможно подвернется случай применить.
Ресурс для изучения - https://metanit.com/sharp/patterns/, на нем же и хорошее введение - зачем они, почему, куда и где.

Оно пойдет проще когда есть опыт на который прочитанное сможет быть спроецировано, вроде - "а, вот тут можно было это использовать, а тут другое, блин, как же удобно можно сделать такую логику".
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы