С какими проблемами я могу столкнуться, если не буду использовать Шаблоны разработки программного обеспечения? Можете ли вы рассказать мне о проблемах подхода к дизайну с использованием стандартных объектно-ориентированных методов?
design-patterns
я студент
источник
источник
Ответы:
Вы упускаете суть.
Шаблоны проектирования изначально существуют при разработке программного обеспечения, так же как в мире существуют структурные шаблоны. Даже если вы не знаете названия вещей, вы в конечном итоге обнаружите, что определенные физические структуры хорошо подходят для определенных задач. Вы обнаружите, что треугольная форма дерева / металлических стержней / и т. Д. Является очень устойчивой структурой, но только на плоскости. Вы найдете квадратные кирпичи имеют определенные преимущества перед круглыми ...
Аналогично, определенные программные структуры в некотором роде уникальны или оптимальны. В конце концов вы их найдете и будете использовать независимо от того, знаете ли вы их имена . В этом суть шаблонов проектирования - это названия для этих структур, которые опытные программисты знают и используют в любом случае. Это дает программистам возможность общаться более единообразно и лаконично. Это также позволяет программистам более осмысленно мыслить концепцией шаблонов.
Итак, два ключевых момента, которые я пытаюсь сделать:
источник
Те, кто не может вспомнить прошлое, обречены повторять его.
Вы не столкнетесь с какими-либо конкретными проблемами, кроме тех, которые возникают в вашем дизайне. И со временем вы в конечном итоге будете использовать шаблоны, не зная об этом, вы просто потратили время на то, чтобы сами их выяснить. Знание шаблонов заранее облегчает их обнаружение в дизайне и несет главное преимущество, которое доказывают многие люди.
Все, что разрабатывается сегодня, в значительной степени основано на предыдущих знаниях, не имеет смысла игнорировать это. Представьте себе строительство небоскреба сегодня, не зная проблем, с которыми сталкиваются люди, которые построили соборы несколько сотен лет назад.
источник
У вас будет проблема с невозможностью написать какое-либо программное обеспечение.
Переменные - это шаблон дизайна.
Методы - это шаблон дизайна.
Операторы - сложение, вычитание и т. Д. - это шаблон проектирования.
Заявления - это шаблон дизайна.
Значения - это шаблон дизайна.
Ссылки - это шаблон дизайна.
Выражения - это шаблон дизайна.
Классы - это шаблон дизайна.
...
Все, что вы делаете в программировании всегда, является шаблоном дизайна . Большую часть времени шаблон настолько укоренился в вашем мышлении, что вы перестали думать о нем как о «шаблоне дизайна». Вещи, которые вы должны выучить, такие как «шаблон синглтона» и т. Д., - это просто шаблоны, которые еще не были внедрены в язык, который вы используете.
Я понятия не имею, что означает этот вопрос. Шаблоны проектирования - это «стандартные объектно-ориентированные методы» - вот что делает их шаблонами проектирования . Шаблон проектирования - это стандартная методика решения конкретной проблемы, особенно (хотя и не обязательно ) на объектно-ориентированном языке.
источник
The things that you have to learn like "the singleton pattern" and so on are simply patterns that haven't (yet) been baked into whatever language you're using.
- Это (почти) определение шаблона проектирования - гибкая / легко повторно используемая конструкция кода, используемая для преодоления ограничений в самом языке, которая легко общается с другими. Как только это становится частью языка, это больше не шаблон проектирования.Понимание сути шаблона проектирования важнее, чем его использование в письме. Некоторые модели, IMO, глупы, по крайней мере, в языковых парадигмах, к которым я привык. ИМО, программист, который просто использует шаблоны проектирования вслепую и не понимая их по-настоящему, является худшим программистом, чем тот, кто хотел бы самостоятельно продумывать вещи. Но тот, кто знакомится с идеями, а затем решает для себя, стоят ли они того, может оказаться гораздо более сильным программистом, чем любой из них.
Тем не менее, я не имею ни малейшего представления о том, какой смысл в весе, и мне не стыдно в этом признаться. (см. комментарии к другой записи в Википедии, которая очень помогла)
Я рекомендую статью в Википедии о шаблонах дизайна. Это очень лаконично и четко написано. Очень полезно для понимания того, почему кто-то может беспокоиться о данном шаблоне дизайна или нет. Лично я склонен находить самые простые из них наиболее полезными, и я бы не стал дважды задумываться о том, чтобы модифицировать конкретную реализацию любого шаблона в соответствии с моими потребностями.
Это идеи, а не чертежи. На некоторых языках это не очень хорошие идеи. В других они по праву считаются препятствиями для преодоления недостатков дизайна языка, которые могут быть лучше компенсированы за счет меньшей сложности. Несмотря на это, не мешает изучить их и попытаться понять проблемы, которые они должны преодолеть, прежде чем принять решение о своих предпочтительных решениях.
С какими проблемами вы столкнетесь? Вы можете упустить возможности и потратить на решение проблем больше времени, чем нужно, если только вы не гений программирования, который уже все понял. Важно внимательно следить за популярными идеями программирования, но никогда не помешает понять, что именно люди думают, что они решают, потому что это придаст больше ясности вашим предпочтительным решениям / подходам.
источник
Основная проблема, с которой вы столкнетесь, заключается в том, что вы будете изобретать велосипед . Их называют шаблонами, потому что они появляются часто и предсказуемо.
источник
Даже если вы будете следовать шаблонам дизайна, у вас может получиться плохой дизайн. Шаблоны дизайна естественны, и вы в конечном итоге будете использовать их в своем дизайне. Вам придется очень постараться, чтобы не использовать ни один из паттернов. Нет оснований осуждать шаблоны проектирования, а главное - выбрать правильные шаблоны для ваших нужд
источник
Вы используете шаблоны дизайна все время, не осознавая этого. Многие стандартные библиотеки на популярных языках разработаны с учетом шаблонов проектирования. Примером является
FileReader
библиотека Java, которая разработана с использованием шаблона проектирования декоратора . Теперь, говоря о вашем собственном коде, вы не обязаны использовать шаблоны проектирования (в большинстве случаев). Шаблон проектирования - это «многократно используемое решение часто встречающейся проблемы» , то есть он поможет вам в написании более понятного и понятного кода, поэтому вам решать, сколько вы захотите избежать использования спагетти-кода.источник