<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Insight IT</title><link>https://www.insight-it.ru/</link><description></description><atom:link href="https://www.insight-it.ru/tag/design-patterns/feed/index.xml" rel="self"></atom:link><lastBuildDate>Thu, 24 Apr 2008 13:03:00 +0400</lastBuildDate><item><title>Design patterns</title><link>https://www.insight-it.ru//theory/2008/design-patterns/</link><description>&lt;p&gt;&lt;img alt="Шаблоны проектирования" class="right" src="{filename/images/idea.png" title="Шаблоны проектирования"/&gt;
Как говорится, все новое - хорошо забытое старое. Когда я в вдруг вспомнил
эту поговорку, мне пришла в голову мысль вернуться к незаслуженно
забытой некоторое время назад теме объектно-ориентированного
программирования. Возможно многим читателям уже поднадоели часто
публикующиеся здесь &lt;a href="https://www.insight-it.ru/highload/"&gt;статьи об устройстве уже существующих проектов&lt;/a&gt;, это конечно же не повод прекратить их публикацию, но, тем не менее, немного отвлечься все же стоит.&lt;/p&gt;
&lt;p&gt;Этот пост будет введением в очередную ветвь спирали повествования о
теории &lt;a href="/tag/oop/"&gt;ООП&lt;/a&gt;, о которой уже много было сказано различными
авторами, не знаю остались ли в этой теме неосвещенные уголки, но все же
я думаю, что мне найдется что сказать.&lt;/p&gt;
&lt;!--more--&gt;
&lt;p&gt;&lt;em&gt;&lt;a href="/tag/design-patterns/"&gt;Design Patterns&lt;/a&gt;&lt;/em&gt; обычно переводят на русский
фразой &lt;em&gt;"шаблоны проектирования"&lt;/em&gt;, оно применимо и за рамками
программирования, в таких случаях под ней подразумевают просто
стандартизованное эффективное решение характерного класса задач. В
рамках программирования это понятие можно несколько конкретизировать,
представив его как незаконченную заготовку для будущего проекта или его
части, которая не может быть напрямую реализована в коде, но зато она
предоставляет некую скорее теоретическую базу для последующего решения
задачи в самом проекте. Возможно у кого-то из вас возникла ассоциация с
алгоритмами, она вполне предсказуема, но не совсем уместна: речь идет о
проектировании, а не решении каких-либо вычислительных задач.&lt;/p&gt;
&lt;p&gt;Если же говорить об объектно-ориентированных шаблонах проектирования, то
зачастую помимо просто методов и средств для решения задачи или просто
общей схемы организации проекта они предоставляют механизмы и схемы
построения взаимоотношения классов, выполняющих определенные роли для
достижения общей цели.&lt;/p&gt;
&lt;p&gt;Изначально идея построения шаблонов для решения типичных задач появилась
в архитектуре (имеется ввиду которая к строительству относится, а не к
&lt;a href="https://www.insight-it.ru/highload/"&gt;высоконагруженным системам&lt;/a&gt; :) ). Автором ее был Cristopher Alexander, он впервые составил набор шаблонов проектирования для архитекторов во второй половине двадцатого века, но, к сожалению, в этой науке эта идея не прижилась, зато ее успешно переняли и перенесли в область программирования.&lt;/p&gt;
&lt;p&gt;Основной вклад в этот процесс сделала знаменитая команда, известная как
&lt;strong&gt;Gang of Four&lt;/strong&gt;. Она состоит из четырех авторов не менее известной
книги &lt;em&gt;"Design Patterns &amp;mdash; Elements of Reusable Object-Oriented
Software"&lt;/em&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Erich Gamma&lt;/li&gt;
&lt;li&gt;Richard Helm&lt;/li&gt;
&lt;li&gt;Ralph Jonson&lt;/li&gt;
&lt;li&gt;John Vlissides&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Именно благодаря этим людям и их книге эта методология проектирования
программного обеспечения получила такое широкое распространение. В своей
книге они предоставили 23 основных шаблона проектирования, каждый из
которых может использоваться для решения очень широкого класса
абстрактных задач, при этом абсолютно не привязываясь к какому-либо
конкретному языку программирования или стилю написания кода. Но не стоит
забывать, что все они - просто часть теории, скорее указание на верный
путь, чем тропинка, с которой нельзя сделать шаг в сторону.&lt;/p&gt;
&lt;p&gt;Основным преимуществом применения шаблонов проектирования при разработке
программного обеспечения является тот факт, что они помогают существенно
ускорить процесс разработки и проектирования, предоставляя проверенную
временем и многими разработчиками парадигму разработки. Помимо этого они
существенно упрощают понимание кода при работе над ним группы
программистов, а также процесс составления документации.&lt;/p&gt;
&lt;p&gt;В последующих записях я планирую пройтись по основным шаблонам
проектирования с более подробной информацией о сферах их применения, их
востребованности, эффективности, а также с приведением примеров на
каком-либо языке программирования, скорее всего на &lt;a href="/tag/java/"&gt;Java&lt;/a&gt;,
так как он позволит сделать примеры более наглядными. Как обычно для
более оперативного получения информации об обновлении блога хочу
предложить &lt;a href="/feed/"&gt;подписаться на RSS-ленту&lt;/a&gt;.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Иван Блинков</dc:creator><pubDate>Thu, 24 Apr 2008 13:03:00 +0400</pubDate><guid>tag:www.insight-it.ru,2008-04-24:theory/2008/design-patterns/</guid><category>Design Patterns</category><category>Gang of Four</category><category>GoF</category><category>ООП</category><category>Программирование</category></item></channel></rss>