Паттерны что это такое – Паттерн (значения) — Википедия

Содержание

Паттерны ООП в метафорах / Habr

Большинство литературы посвященной паттернам в ООП (объектно-ориентированном программировании), как правило, объясняются на примерах с самим кодом. И это правильный подход, так как паттерны ООП уже по-умолчанию предназначаются для людей, которые знают что такое программирование и суть ООП. Однако порой требуется заинтересовать этой темой людей, которые в этом совершенно ничего не понимают, например «не-программистов» или же просто начинающих «компьютерщиков». Именно с этой целью и был подготовлен данный материал, который призван объяснить человеку любого уровня знаний, что такое паттерн ООП и, возможно, привлечет в ряды программистов новых «адептов», ведь программирование это на самом деле очень интересно.
Статья предназначена исключительно для новичков, так что «старожилы» ничего нового для себя не узнают. В основном статья описывает известные паттерны из книги «Приемы объектно-ориентированного программирования. Шаблоны проектирования.», но более популярным и простым языком.
Что же такое вообще паттерн в ООП?

Паттерн (от англ. Pattern) — образец, шаблон.
Представьте, что вы хотите сделать новый автомобиль, но вы никогда этим не занимались. Сколько колес и почему вы спроектируете для него? Сейчас вы уже скорее всего скажете что 4, однако почему не 3, 5, 10, 20? Потому-что практикой использования уже было выяснено, что обычные автомобили лучше всего делать на 4-х колесах — это шаблон проектирования сформированный временем. Именно такому же подходу и служат паттерны в ООП и вы не столкнетесь с ними в разработке до тех пор, пока вам не потребуется «сделать автомобиль». Однако иногда случается так, что вы создаете «трицикл», и только потом, набив несколько шишек с его устойчивость и неудачным вписыванием в колею на дороге, узнаете что существует паттерн «автомобиль», который значительно упростил бы вам жизнь, знай вы про него ранее.

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

Порождающие паттерны

Паттерны которые создают новые объекты, или позволяют получить доступ к уже существующим. То есть те шаблоны, по которым можно создать новый автомобиль и как это лучше сделать.
Singleton (одиночка)

Один из самых известных и, пожалуй, самых спорных паттернов.
Представьте, что в городе требуется организовать связь между жителями. С одной стороны мы можем связать всех жителей между собой протянув между ними кабели телефонных линий, но полагаю вы понимаете насколько такая система неверна. Например, как затратно будет добавить еще одного жителя в связи (протянуть по еще одной линии к каждому жителю). Чтобы этого избежать, мы создаем телефонную станцию, которая и будет нашим «одиночкой». Она одна, всегда, и если кому-то потребуется связаться с кем-то, то он может это сделать через данную телефонную станцию, потому что все обращаются только к ней. Соответственно для добавления нового жителя нужно будет изменить только записи на самой телефонной станции. Один раз создав телефонную станцию все могут пользоваться ей и только ей одной, в свою очередь эта станция помнит всё что с ней происходило с момента ее создания и каждый может воспользоваться этой информацией, даже если он только приехал в город.
Основной смысл «одиночки» в том, чтобы когда вы говорите «Мне нужна телефонная станция», вам бы говорили «Она уже построена там-то», а не «Давай ее сделаем заново». «Одиночка» всегда один.

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

Registry (реестр, журнал записей)

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

Паттерны «одиночка» и «реестр» постоянно встречаются нам в повседневной жизни. Например бухгалтерия в фирме является «одиночкой», потому как она всегда одна и помнит что с ней происходило с момента ее начала работы. Фирма не создает каждый раз новую бухгалтерию когда ей требуется выдать зарплату. В свою очередь бухгалтерия является и «реестром», потому как в ней есть записи о каждом работнике фирмы.

Примечание:
«Реестр» нередко является «одиночкой», однако это не всегда должно быть именно так. Например мы можем заводить в бухгалтерии несколько журналов, в одном работники от «А» до «М», в другом от «Н» до «Я». Каждый такой журнал будет «реестром», но не «одиночкой», потому как журналов уже 2. Хотя нередко «реестр» служит именно для хранения «одиночек».

Сам паттерн «реестр» не являтся «порождающим паттерном» в полном смысле этого термина, однако его удобно рассматривать именно во взаимосвязи с ними.

Multiton (пул «одиночек»)

Как понятно из названия паттерна, это по своей сути «реестр» содержащий несколько «одиночек», каждый из которых имеет своё «имя» по которому к нему можно получить доступ.
Object pool (пул объектов)

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

Суть паттерна практически полностью описывается его названием. Когда вам требуется получать какие-то объекты, например пакеты сока, вам совершенно не нужно знать как их делают на фабрике. Вы просто говорите «сделайте мне пакет апельсинового сока», а «фабрика» возвращает вам требуемый пакет. Как? Всё это решает сама фабрика, например «копирует» уже существующий эталон. Основное предназначение «фабрики» в том, чтобы можно было при необходимости изменять процесс «появления» пакета сока, а самому потребителю ничего об этом не нужно было сообщать, чтобы он запрашивал его как и прежде.
Как правило, одна фабрика занимается «производством» только одного рода «продуктов». Не рекомендуется «фабрику соков» создавать с учетом производства автомобильных покрышек. Как и в жизни, паттерн «фабрика» часто создается «одиночкой».
Builder (строитель)

Данный паттерн очень тесно переплетается с паттерном «фабрики». Основное различие заключается в том, что «строитель» внутри себя, как правило, содержит все сложные операции по созданию объекта (пакета сока). Вы говорите «хочу сока», а строитель запускает уже целую цепочку различных операций (создание пакета, печать на нем изображений, заправка в него сока, учет того сколько пакетов было создано и т.п.). Если вам потребуется другой сок, например ананасовый, вы точно также говорите только то, что вам нужно, а «строитель» уже позаботится обо всем остальном (какие-то процессы повторит, какие-то сделает заново и т.п.). В свою очередь процессы в «строителе» можно легко менять (например изменить рисунок на упаковке), однако потребителю сока этого знать не требуется, он также будет легко получать требуемый ему пакет сока по тому же запросу.

Примечание:
Чтобы лучше понять разницу между фабрикой и строителем, можно использовать следующую метафору.
«Фабрика» — это автомат по продаже напитков, в нем уже есть всё готовое (или «осталось разогреть»), а вы только говорите что вам нужно (нажимаете кнопку). «Строитель» — это завод, который производит эти напитки и содержит в себе все сложные операции и может собирать сложные объекты из более простых (упаковка, этикетка, вода, ароматизаторы и т.п.) в зависимости от запроса.

Prototype (прототип)

Данный паттерн чем-то напоминает «фабрику», он также служит для создания объектов, однако с немного другим подходом. Представьте что у вас есть пустой пакет (из под сока), а вам нужен полный с апельсиновым соком. Вы «говорите» пакету «Хочу пакет апельсинового сока», он в свою очередь создает свою копию и заполняет ее соком, который вы попросили. Немного «сказочный пример», но в программировании часто так и бывает. В данном случае пустой пакет и является «прототипом», и в зависимости от того что вам требуется, он создает на своей основе требуемые вами объекты (пакеты сока).
Клонирование не обязательно должно производится на самом «пакете», это может быть и какой-то другой «объект», главное лишь что данный «прототип» позволяет получать его экземпляры.
Factory method (фабричный метод)

Данный паттерн довольно сложно объяснить в метафорах, но всё же попробую.
Ключевой сложностью объяснения данного паттерна является то, что это «метод», поэтому метафора метода будет использовано как действие, то есть например слово «Хочу!». Соответственно, паттерн описывает то, как должно выполнятся это «Хочу!».
Допустим ваша фабрика производит пакеты с разными соками. Теоретически мы можем на каждый вид сока делать свою производственную линию, но это не эффективно. Удобнее сделать одну линию по производству пакетов-основ, а разделение ввести только на этапе заливки сока, который мы можем определять просто по названию сока. Однако откуда взять название?
Для этого мы создаем основной отдел по производству пакетов-основ и предупреждаем все под-отделы, что они должны производить нужный пакет с соком про простому «Хочу!» (т.е. каждый под-отдел должен реализовать паттерн «фабричный метод»). Поэтому каждый под-отдел заведует только своим типом сока и реагирует на слово «Хочу!».
Таким образом если нам потребуется пакет апельсинового сока, то мы просто скажем отделу по производству апельсинового сока «Хочу!», а он в свою очередь скажет основному отделу по созданию пакетов сока, «Сделай ка свой обычный пакет и вот сок, который туда нужно залить».

Примечание:
Как вы могли уже заметить, «фабричный метод» является как бы основой для «фабрики», «строителя» и «прототипа». В разработке часто именно так и получается, сперва реализуют фабричный метод, а по мере усложнения кода выбирают во что именно его преобразовать, в какой из перечисленных паттернов. При использовании «фабричного метода» каждый объект как бы сам является «фабрикой».

Lazy initialization (отложенная инициализация)

Иногда требуется что-то иметь под рукой, на всякий случай, но не всегда хочется прилагать каждый раз усилия, чтобы это каждый раз получать/создавать. Для таких случаев используется паттерн «отложенная инициализация». Допустим вы работаете в бухгалтерии и для каждого сотрудника вы должны подготавливать «отчет о выплатах». Вы можете в начале каждого месяца делать этот отчет на всех сотрудников, но некоторые отчеты могут не понадобиться, и тогда скорее всего вы примените «отложенную инициализацию», то есть вы будете подготавливать этот отчет только тогда, когда он будет запрошен начальством (вышестоящим объектом), однако начальство по сути в каждый момент времени может сказать что у него этот отчет уже есть, однако готов он уже или нет, оно не знает и знать не должно. Как вы уже поняли, данный паттерн служит для оптимизации ресурсов.
Dependency injection (внедрение зависимости)

Внедрение зависимости позволяет переложить часть ответственности за какой-то функционал на другие объекты. Например если нам требуется нанять новый персонал, то мы можем не создавать свой отдел кадров, а внедрить зависимость от компании по подбору персонала, которая свою очередь по первому нашему требованию «нам нужен человек», будет либо сама работать как отдел кадров, либо же найдет другую компанию (при помощи «локатора служб»), которая предоставит данные услуги.
«Внедрение зависимости» позволяет перекладывать и взаимозаменять отдельные части компании без потери общей функциональности.
Service Locator (локатор служб)
автор: VolCh
«Локатор служб» является методом реализации «внедрения зависимости». Он возвращает разные типы объектов (компаний) в зависимости от кода инициализации. Пускай задача стоит доставить наш пакет сока, созданный строителем, фабрикой или ещё чем, куда захотел покупатель. Мы спрашиваем у локатора «дай нам службу доставки», и он нам соединяет на со службой доставки по номеру телефона, который директор ему дал (потому что получает откат они нам дают скидку как постоянным клиентам), а мы уже просим службу доставить сок по нужному адресу. Сегодня одна служба, а завтра может быть другая. Нам без разницы какая это конкретно служба, решение принимает директор и сообщает об этом локатору служб, нам важно знать лишь что они могут доставлять то, что мы им скажем туда, куда скажем, то есть службы реализуют интерфейс «Доставить на ».
Структурирующие паттерны

Данные паттерны помогают внести порядок и научить разные объекты более правильно взаимодействовать друг с другом.
Adapter или wrapper (адаптер, обертка)

Данный паттерн полностью соответствует своему названию. Чтобы заставить работать «советскую» вилку через евро-розетку требуется переходник. Именно это и делает «адаптер», служит промежуточным объектом между двумя другими, которые не могут работать напрямую друг с другом.
Bridge (мост)

Представим ситуацию, когда вам требуется работать на разных автомобилях, однако садясь в новый автомобиль вам уже желательно знать как им управлять. Таким образом вы сталкиваетесь с паттерном «мост». С одной стороны вы имеете множество различных автомобилей (разные модели и марки), но среди все них есть общая абстракция (интерфейс) ввиде руля, педалей, коробки передач и так далее. Таким образом мы задаем как-бы правила изготовления автомобилей по которым мы можем создавать любые их виды, но за счет сохранения общих правил взаимодействия с ними, мы можем одинаково управлять каждым из них. «Мостом» в данном случае является пара двух «объектов»: конкретного автомобиля и правил взаимодействия с этим (и любым другим) автомобилем.
Composite (компоновщик)

Довольно интересный паттерн суть которого заключается в минимизации различий в управлении как группами объектов так и индивидуальными объектами. Для примера можно рассмотреть управление солдатами в строю. Существует строевой устав, который определяет как управлять строем и согласно этого устава абсолютно не важно кому отдается приказ (например «шагом марш») одному солдату или целому взводу. Соответственно в устав (если его в чистом виде считать паттерном «компоновщик») нельзя включить команду, которую может исполнить только один солдат, но не может исполнить группа, или наоборот.
Decorator (декоратор, оформитель)

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

Паттерн «фасад» используется для того, чтобы делать сложные вещи простыми. Возьмем для примера автомобиль. Представьте, если бы управление автомобилем происходило немного по-другому: нажать одну кнопку чтобы подать питание с аккумулятора, другую чтобы подать питание на инжектор, третью чтобы включить генератор, четвертую чтобы зажечь ламочку на панели и так далее. Всё это было бы очень сложно. Для этого такие сложные наборы действий заменяются более простыми и комплексные как «повернуть ключ зажигания». В данном случае поворот ключа зажигания и будет тем самым «фасадом» для всего обилия внутренних действий автомобиля.
Front controller (единая точка входа)

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

Самым лучшим примером (который я смог найти в реальной жизни) для метафорического сравнения паттерна «приспособленец» является театральная постановка. Представьте что нам требуется поставить пьесу. Однако по сценарию в этой пьесе задействованы несколько десятков людей, которые по своей сути выполняют одинаковые действия, например участвуют в массовках различных сцен в разные промежутки времени, но между ними всё же есть какие-то различия (например костюмы). Нам бы стоило огромных денег нанимать для каждой роли отдельного актера, поэтому мы используем паттерн «приспособленец». Мы создадим все нужные нам костюмы, но для каждой массовки будем переодевать небольшую группу актеров в требуемые для этой сцены костюмы. В результате мы имеем возможность ценой малых ресурсов создавать видимость управления большим количеством казалось бы разных объектов.
Proxy или surrogate (прокси, заместитель, суррогат)

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

Эта группа паттернов позволяет структурировать подходы к обработке поведения и взаимодействия объектов. Проще говоря, как должны проходить процессы в которых существует несколько вариантов протекания событий.
Chain of responsibility (цепочка обязанностей)

Самым простым примером цепочки обязанностей можно считать получение какого-либо официального документа. Например вам требуется получить справку со счета из банка. Так или иначе, вы должны эту справку получить, однако кто именно ее должен вам дать — пока не ясно. Вы приходите в местное отделение банка, вам говорят что «мы сейчас заняты, идите в другое отделение», дальше вы идете в другое, там вам отвечают «мы этим не занимаемся», вы идете в региональное отделение и там получаете нужную справку. Таким образом паттерн реализует «цепочку обязанностей» отдельные объекты которой (отделения банка) должны обработать ваш запрос. Соответственно ваш запрос может быть обработан в первом же отделении, или же в нескольких, в зависимости от самого запроса и обрабатывающих объектов.
Command или action (команда, действие)

Паттерн «команда» очень похож в реальной жизни на кнопки выключателей света в наших квартирах и домах. Каждый выключатель по своей сути делает одно простое действие — разъединяет или соединяет два провода, однако что стоит за этими проводами выключателю не известно. Что подключат, то и произойдет. Точно также действует и паттерн «команда». Он лишь определяет общие правила для объектов (устройств), в виде соединения двух проводов для выполнения команды, а что именно будет выполнено уже определяет само устройство (объект).
Таким образом мы можем включать одним типом выключателей как свет в комнате, так и пылесос.
Interpreter (интерпретатор)

Сравнить данный паттерн можно с тем, как вы закладываете часто используемые действия в сокращенный набор слов, чтобы сам «интерпретатор» потом превратил этот набор в более комплексные осмысленные действия. По сути каждый человек постоянно является «интерпретатором». Хотите провести жизненный эксперимент? Если из дома выходит кто-то из вашей семьи (муж, жена, ребенок), скажите ему простой набор слов «Литр молока, половинку белого, 200 грамм творога». По сути вы ничего особенного не сказали, лишь перечислили набор продуктов, однако велик шанс того, что «интерпретатор» транслирует это в команду «зайди по дороге в продуктовый магазин и купи следующее … и принеси это домой». Паттерн «интерпретатор» призван сократить часто исполняемые действия в более короткое их описание.
Iterator (итератор, указатель)

Все помнят школьное «на первый второй рассчитайся!»? Вот именно в этот момент шеренга вашего класса и являлась реализацией паттерна «итератор», хотя в программировании это конечно более функциональное понятие, но суть примерно та же. «Итератор» предоставляет правила доступа к списку каких-либо объектов независимо от того, что это за объекты. То есть не важно какой именно класс построен и из каких учеников, должны быть общие правила подсчета и обращения как каждому ученику по списку, вроде «13-ый, выйти из строя». Нередко паттерн «итератор» используется для доступа к «реестру». Ссылки, которые вы видите на многих сайтах для переходов по страницам, вроде «следующая», «предыдущая», «в начало» и т.п. по своей сути также являются доступом «итератору» который отвечает за страницы сайта.
Mediator (посредник)

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

Никогда не просили друга с сотовым телефоном на время запомнить (записать себе) тот номер, что диктуют вам по телефону, потому что вы не можете его запомнить сами (телефон занят)? В этот момент ваш друг реализовывал паттерн «хранитель». Он служит для тех случаев, когда какому-либо объекту требуется сохранить своё состояние (состояние знания номера) в другом объекте (вашем друге), и при необходимости его потом восстановить (спросить у друга номера и тем самым восстановить состояние когда вы его знали). Также уместен аналог с тем, как в играх работает сохранение. Файл «сейва» как раз и будет тем самым паттерном «хранитель».
Observer или Listener (наблюдатель, слушатель)

Очень распространенный паттерн в реальной жизни. Например если вы подписались на какую-либо email (или смс) рассылку, то ваш email (или номер сотового телефона) начинает реализовывать паттерн «наблюдатель». Как только вы подписываетесь на событие (например новая статья или сообщение), всем кто подписан на это событие (наблюдателям) будет выслано уведомление, а они уже в свою очередь могут выбрать как на это сообщение реагировать.
Blackboard (доска объявлений)

Данный паттерн служит для обеспечения взаимодействия между большим количеством объектов. Он является расширением паттерна «наблюдатель» и позволяет централизованно обслуживать как «наблюдателей», так и «создателей событий». В аналогии подпиской на email уведомления, это будет сам сайт подписки, который обслуживает множество подписчиков и тех, кто для них создает информацию (сообщения).
Servant (слуга)

Как следует из названия, данный паттерн служит для предоставления группе объектов какого-либо общего функционала. Например телефонная станция является для жителей города паттерном «слуга» если речь заходит о том, как узнать точное время (набрать номер 100).
State (состояние)

В реальной жизни каждый человек может прибывать в разных состояниях. Точно также порой требуется чтобы объекты в программе вели себя по разному в зависимости от каких-либо их внутренних состояний. По аналогии с реальной жизнью можно например привести следующий пример:
Если вы устали то на фразу «Сходи в магазин» вы будете выдавать «Не пойду», если вам нужно сходить в магазин (за пивом?), то на «Сходи в магазин» вы будете выдавать «Уже бегу!». Человек (объект) один и тот же, а поведение разное. Именно для этих целей и используют паттерн «состояние».
Strategy (стратегия)

Используется для выбора различных путей получения результата. Вспомним пример с получением прав. Человек, который будет реализовывать паттерн «стратегия» будет действовать следующим образом: вы говорите ему «Хочу права, денег мало» в ответ вы получите права через длительное время и с большой тратой ресурсов. Если вы скажите ему «Хочу права, денег много», то вы получите права очень быстро. Что именно делал этот человек вы понятия не имеете, но вы задаете начальные условия, а как себя вести уже решает он сам (сам выбирает стратегию).
Соответственно внутри «стратегии» хранятся различные способы поведения, и чтобы выбрать, ему нужны определенные параметры, в данном случае это объем денежных средств. Как устроена сама «стратегия» и какие алгоритмы внутри нее вам собственно знать и требуется.
Specification (спецификация, определение)

Паттерн спецификации позволяет описывать подходит ли данный объект нам на основе каких-либо критериев. Например мы имеем несколько контейнеров для погрузки на судно. Однако чтобы определить грузить контейнер или нет на определенное судно, нам нужно выбрать метод как это определять. Реализация такого метода и является паттерном «спецификация». В самом простом случае для каждого контейнера мы можем определить в паттерне «спецификация» совпадает ли страна назначения корабля со страной назначения контейнера. Соответственно мы один раз вводим правило «сравнить две страны назначения» и применяем его ко всем контейнерам для проверки.
Subsumption (категоризация)

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

Данный паттерн можно сравнить с прохождением обследования в больнице. Однако «посетителем» в терминах паттернов здесь будут сами врачи. Чтобы было понятнее: у нас есть больной которого требуется обследовать и полечить, но так как за разные обследования отвечают разные врачи, то мы просто присылаем к больному врачей в качестве «посетителей». Правило взаимодействия для больного очень простое «пригласите врача (посетителя) чтобы он сделал свою работу», а врач («посетитель») приходит, обследует и делает всё необходимое. Таким образом следуя простым правилам можно использовать врачей для разных больных по одним и тем же алгоритмам. Как уже было сказано, паттерном «посетитель» в данном случае является врач, который может одинаково обслуживать разные объекты (больных) если его позовут.
Single-serving visitor (одноразовый посетитель)

Является частным случаем использования паттерна «посетитель». Если в случае с обычным «посетителем» у нас есть врач которого мы можем отправить к разным больным (и при желании по несколько раз), то в данном паттерне можно привести аналогию, что мы нанимаем врача, отправляем его к одному больному и после обследования сразу увольняем.
Hierarchical visitor (иерархический посетитель)

Тот же самый паттерн «посетитель», однако в данном случае он отправляется к не одному больному, а в целую больницу и обходит там всех больных.
Заключение

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

Надеюсь вы нашли данный материал полезным для себя и благодарю за внимание.

UPD:
дополнительные материалы, которые также могут быть интересны по данной теме:
От пользователя Markel
www.cours.polymtl.ca/inf3700/divers/nonSoftwareExample/patexamples.html

От пользователя NikoM
Книга «Фримен, Фримен, Сьерра: Паттерны проектирования»

habr.com

это что? Значение слова, примеры и образцы различных паттернов

Паттерн — это слово звучит весьма непривычно для многих людей. Его часто используют в самых разных областях профессиональной и общественной деятельности, что создает некоторую путаницу в понимании значения данного выражения. Но на самом деле все достаточно просто. Паттерны, и правда, окружают нас повсюду и могут быть очень разными.

Значение слова паттерн

Чтобы понять, насколько емким является это слово, заглянем в словарь для уточнения перевода. И что же мы видим? Английское слово pattern переводится на наш родной язык, как:

  • модель или шаблон;
  • образец или пример;
  • рисунок или узор;
  • система или структура.

Вот сколько значений у данного понятия! Бывают паттерны в программировании, в психологии, в дизайне и, наконец, в самой природе. Вот в ней-то мы сейчас и будем искать образцы паттернов.

Природные паттерны

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

А если мы посмотрим на растения или на деревья, то, опять же, увидим в них бесчисленные повторения одних и тех же форм. Такие естественные узоры называют еще фракталоподобными паттернами. К последним можно отнести горы, береговые линии, узоры на шкурах животных, геологические разломы и т. д.

Паттерны в психологии

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

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

В психологии есть еще такое понятие, как гипнотические паттерны. Это особенные повторяющиеся словесные выражения, которые помогают погрузить человека в гипнотический транс. Причем зачастую сам человек об этом и догадываться не будет. Такие техники часто используются в НЛП. Люди-манипуляторы хорошо владеют такими приемами. Изобретателем гипнотических паттернов принято считать Милтона Эриксона.

Паттерны в архитектуре и дизайне

Здесь все просто. Посмотрите на любое здание: вы увидите повторяющиеся архитектурные элементы, которые были спроектированы дизайнером. Конечно, лучше при этом смотреть на старинные особняки, которые в изобилии украшены прекрасной лепниной, колоннами и прочими архитектурными изысками. Впрочем, можно взглянуть и на обычный многоквартирный дом, ведь окна, балконы и лоджии тоже являются архитектурными паттернами. А вот еще хороший пример: дизайнерский паттерн — это рисунок на обоях, на ткани или на линолеуме.

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

Как сделать паттерн

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

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

fb.ru

Значение слова ПАТТЕРН. Что такое ПАТТЕРН?

Па́ттерн (англ. pattern — образец, шаблон; форма, модель; схема, диаграмма) — схема-образ, действующая как посредствующее представление, или чувственное понятие, благодаря которому в режиме одновременности восприятия и мышления выявляются закономерности, как они существуют в природе и обществе.

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

Каждый из органов восприятия (чувств) воспринимает паттерны в соответствии со своими особенностями.

В науке, в том числе в математике и языкознании, паттерны выявляются путём исследования.

Прямое наблюдение может выявлять визуальные паттерны как они формируются в природе и в искусстве.

Визуальные паттерны в природе часто хаотичны. Они не копируют друг друга и часто являются фрактальными.

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

Когда научные теории исследуют и предсказывают синхронно существующие регулярности в природе и обществе, то это и есть выявление паттернов.

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

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

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

kartaslov.ru

Что такое фирменный паттерн и зачем он нужен компании? | Блог о создании лого и дизайне

Содержание:
1.Что такое паттерн?
2.Зачем нужны паттерны?
3.Как и где можно использовать паттерны?
4.Как получить оригинальный паттерн c Логастер

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

Что такое паттерн?

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

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

Зачем нужны паттерны? Какую пользу они приносят?

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

Уникальный узор поможет вашей корпоративной символике ярко выделиться на рынке, сделает ее более заметной и узнаваемой. Более того, со временем этот паттерн будет ассоциироваться с вашим брендом сам по себе, без дополнительного упоминания компании или продукта. Например, всем известен знаменитый паттерн Louis Vuitton (золотистые орнаменты и перекрещенные буквы LV на коричневом фоне) или же не менее известный паттерн бренда Burberry (красно-бело-черно-желтая «клетка»).

Универсальность таких знаков позволяет размещать в них буквально любые предметы – товары или услуги, предоставляемые вашей фирмой. Например, производитель меда может использовать в своем фирменном стиле паттерн из пчелиных сот, производитель чая – чайные листья и т.д. Данный принцип поможет вам достичь сразу нескольких целей: не только дополнить фирменный стиль оригинальным узором, но также в очередной раз продемонстрировать аудитории свою продукцию.

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

Сложный многокомпонентный паттерн удастся использовать во всех возможных вариациях – как целиком в формате бесконечного узора, так и какие-либо компоненты по отдельности. Если вы уделили должное внимание продвижению своего бренда, то рекламную пользу будут приносить даже малейшие детали орнамента, которые можно размещать на таких же мелких предметах или пространствах.

Как и где можно использовать паттерны?

Итак, в каких местах можно опубликовать свежий оригинальный орнамент для получения положительного результата?

Корпоративный сайт и социальные сети

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

Далее, обязательно публикуйте паттерн на страницах вашей компании или бренда в популярных соцсетях. Здесь он может стать одним из основных элементов брендирования: в фоне, на обложке и в других возможных местах. Считается, что для строгих корпоративных сайтов идеально подходят аналогичные абстрактные или геометрические паттерны, которые выглядят так же солидно. Впрочем, если ваш фирменный стиль допускает экстравагантные детали, то можете позволить и более «фривольные» элементы.

Продукция и ее упаковка

Чаще всего паттерны можно увидеть на различной продукции, связанной с индустрией моды, там, где поощряется максимальная креативность. Завершенные или частичные орнаменты активно участвуют в оформлении новых моделей одежды, обуви, парфюмерии и разнообразных аксессуаров.

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

Дизайн интерьера

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

Для этих целей можно использовать не только краску, но и другие материалы: обои, плитку, мозаику и т.д. – всё зависит от вашей фантазии, возможностей и целесообразности. Иногда паттерны размещают не только на стенах и потолках, но и на предметах интерьера: мебели, текстиле, ковровых покрытиях и т.д.

Носители фирменного стиля

Паттерны могут присутствовать на всех элементах фирменного стиля, как бы скрепляя их между собой и являясь той самой объединяющей деталью. При правильном применении корпоративный паттерн станет опознавательным знаком вашего бренда, по которому его будут узнавать даже без дополнительных подсказок (логотипа, названия, слогана и т.д.).

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

Как получить оригинальный паттерн при помощи сервиса Logaster?

Разработка уникального паттерна с нуля займет немало времени, особенно если вам необходим многогранный узор с большим количеством мелких деталей. Кроме того, для подготовки качественного орнамента понадобится помощь профессионального дизайнера (или же соответствующие навыки лично у вас). Гораздо более быстрое и удобное решение данной задачи предлагает сервис Logaster. С его помощью вы сможете за считанные минуты выбрать уникальный паттерн из тысяч доступных вариантов. Здесь есть возможность подобрать паттерны определенного стиля или расцветки, что заметно ускорит ваш поиск.

Также Logaster позволяет пользователям «примерить» орнаменты на логотип или иную символику и посмотреть, как они будут смотреться непосредственно на визитках, бланках, конвертах или прочих элементах фирменного стиля.

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

www.logaster.ru

паттерн — Финансовый словарь смарт-лаб.

Паттерн (от англ. pattern —  образец, шаблон) — общее название повторяющихся графических закономерностей в движении цен актива.

Возникновение устойчивого паттерна на графике дает основание надеятся, что рынок пойдет в том же направлении, в котором ходил в предыдущие моменты возникновения подобногой графический фигуры. Иными словами, возникновение паттерна на графике дает статистическое преимущество при входе в сделку.

Синонимы паттерна в трейдерском жаргоне — фигура, формация, сетап. 

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

Пример паттерна:
 

Описание паттерна:

  • Консолидация цен, которая пробивается вниз.
  • В последующий час становится очевидным, что пробой вниз был ложным.
  • Вход в сделку:
  • покупка на закрытии растущего часа или покупка на обратном пробитии максимума после ложного пробития минимума. 

Указанный паттерн может работать и в обратном направлении (ложное пробитие максимума и последующее падение)

Паттерн от 123insaider:
1. Вола сужается. 
2. Ложный пробой хая флэта.
3. Резкий слив назад и пробой лоу. 

Пример паттернов на вход от уровня [2]:

Торговые стратегии на основе свечных паттернов [3]:

Примеры паттернов на американском рынке акций:

Далеко не все считают, что паттерны дают преимущство в трейдинге.
Например, уважаемый алготрейдер Антон Медведев пишет[4]:

«Вот лично я прямо таки паттерна, чтобы он был статистически обоснован: чтобы было настоящее смещение вероятности на истории не видел. Нет, были конечно технические статегии всякие вроде за SnP или от больших лотов торговля и т.п., но не «паттерны».
Что есть «паттерн»? Грубо гворя это какая-то рыночная ситуация, которая прогнозирует дальнейшее движение.

Вот тут у меня начинается не понимание, а именно:

  1. Очевидно есть группа трейдеров, торгующих свои паттерны и стабильно зарабатывающие. И глупо утверждать, что их результат случаен.
  2. Что то я не слышал от знакомых алготрейдеров (профессиональных) про какие-то паттерны и т.п. да и сам когда тестил что-то получал вероятности 50 на 50»

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

Чтобы дополнить статью «Паттерн» своей информацией, пишите комментарии.

Ссылки
Паттерны японских свечей 
Про поиск паттернов
15 способов управления ценовыми моделями 

[1] Графический паттерн от 123insider
[2] http://smart-lab.ru/blog/180872.php
[3] http://smart-lab.ru/blog/180346.php  
[4] паттерны
Графический паттерн Лондон Бридж 
Стратегия Генератор свечных паттернов 
Стратегия внутренний бар  
реальноли торговать по свечам?
Паттерны в контексте волнового анализа 
Паттерны, как я их торгую и как советую (+222,132к, 04.05.2014) 
Алексей Ван: Станция для поиска паттернов теперь полностью бесплатна (+134,40к, 8.3.2015) 


Видео: Илья Данилов: паттерны на американском рынке акций (+16) 
Видео: 0:12:13 Применение классических паттернов технического анализа на современных рынках 1. 
Видео: 0:55:58 United Traders: Новая лекция по паттернам от Алексея Маркова (+69,3к,17.2.15) 

smart-lab.ru

Паттерны ООП простыми словами: паттерны поведения

В этой статье простыми словами поговорим про паттерны поведения, которые описывают, как должны происходить процессы с несколькими вариантами развития событий.

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

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

Паттерн «Команда» похож на то, как работают выключатели света в наших домах. Каждый выключатель делает простое действие – соединяет или разъединяет два контакта. Что стоит за этими контактами выключателю неизвестно. Этот паттерн просто определяет общие правила для объектов, без необходимости описания всей подоплеки. Благодаря этому, одним типом выключателей можно взаимодействовать как с освещением, так и с чайником.

«Итератор» предоставляет правила доступа к списку объектов вне зависимости от их типа. Пример в реальной жизни – школьная шеренга на физкультуре, рассчитывающаяся на первый-второй. Часто, этот паттерн используется для доступа к другому – «реестру».

Вернемся к примеру из паттерна «одиночка» – телефонной станции. Ее можно рассматривать в качестве релевантного примера и для данного паттерна. Однако есть различия: «посредник» должен еще и управлять своей группой. Если вернуться к примеру со строем, то «медиатором» в нем будет командир, отдающий приказы.

Этот паттерн описывает, подходит ли данный объект по параметрам. К примеру, нужно погрузить на судно грузовые контейнеры. Чтобы понять, нужно ли грузить конкретный контейнер, нам нужно выбрать метод, который будет это определять – этот процесс будет реализован паттерном «спецификация». В простейшем случае для каждого контейнера в «спецификации» мы определим страну назначения и если она будет совпадать со страной прибытия корабля – будем грузить. Таким образом, один раз вводится правило «сравнить две страны назначения», которое будет применяться ко всем кораблям и контейнерам.

Является прямым следствием «спецификации». Позволяет распределять объекты по категориям на основе определенных условий. Примером категоризации по аналогии с контейнерами и кораблями будет то, какие контейнеры в какие страны направляются.

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

В общих случаях он нужен, когда какому-то объекту требуется сохранить свое состояние в другом объекте и при необходимости восстановить его.

Данный паттерн – это подписка на событие. К примеру, если вы подписаны на смс или email рассылку – ваш телефон или почтовый ящик реализует паттерн «Listener».

Данный паттерн является расширением предыдущего. Blackboard позволяет централизовано обслуживать как «наблюдателя», так и создателя событий. По аналогии с прошлым примером, этот паттерн реализует сам сайт, на котором был подписан пользователь и который генерирует рассылки.

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

«Посетителя» легко понять, если представить стационарное обследование в больнице. Здесь посетителями будут врачи, которые приходят к пациенту и осматривают его. Мы можем использовать один и тот же алгоритм, чтобы отправлять разных врачей к разным пациентам.

Частный случай предыдущего паттерна. В рамках прошлого примера, врач будет не один и тот же, а каждый раз другой. То есть, мы отправляем к пациенту не врача, который работает в больнице, а каждый раз нанимаем самостоятельного доктора, который делает свою работу, получает плату и уходит.

Это тот же врач-«посетитель», только он отправляется в больницу и обходит всех больных, а не только одного.

Можно привести в качестве аналогии внутреннее состояние человека – оно может быть разным в разный момент времени. Например, человек пришел с работы и получил запрос «Сходить в магазин». Такой запрос вызовет негативную выдачу «не пойду». Однако, если завтра человеку никуда не надо, возможно, он захочет купить в магазине не только хлеб насущный и результат обработки запроса будет ровно противоположным. Итого: один объект, один запрос, разные результаты. Для определения результата и используется «состояние».

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

proglib.io

Паттерн – что это такое, примеры, особенности

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

Паттерн указывает на шаблонность в поведении, взглядах или мышлении человека. Многие люди страдают от однотипных проблем или ситуаций в своей жизни, что говорит о том, что их поведение стереотипное, то есть шаблонное. Когда человек используется паттерное поведение, тогда его жизнь становится цикличной, закономерной и даже предсказуемой. Нередко читатели сайта психологической помощи psymedcare.ru сами говорили или слышали от людей выражение: «Я знал(-а), что так случится». Когда ситуации повторяются, это указывает на шаблонное поведение самого человека.

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

Но шаблонное мышление (то есть ассоциативные связи знакомого с незнакомым) приводит к тому, что человек лишает себя возможности видеть различия, несоответствия, уникальности и т. п. Мужчина не может рассмотреть за белыми волосами развитый ум женщины. Человек не видит, что незнакомец абсолютно не похож по характеру на того, кого он внешне напоминает. Женщина не замечает задатков у бедных мужчин достичь успеха в будущем. Шаблонное мышление помогает выживать, но лишает возможности видеть варианты, новые ходы и решения.

О чем говорит шаблонное мышление? Если вас судят так же, как судят других людей, лишь потому, что вы в чем-то схожи между собой, это говорит о том, что вас:

  • не любят;
  • не пытаются понять.

Желание судить приводит к шаблонности. Вы о всех людях в красных курточках судите так же, как осудили уже знакомого вам человека, который тоже носил красную курточку. Все они похожи между собой, потому что носят красную курточку, а значит, ведут себя одинаковым образом, обладают одним и тем же характером. Это хорошо для вашего выживания. Но что произойдет, если вам ничто не угрожает, а вы судите шаблонно? Может оказаться, что незнакомый человек в красной курточке мог помочь вам стать успешным человеком и абсолютно быть непохожим на того, кого вы уже знаете.

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

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

Что такое паттерн?

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

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

Стереотипность мышления и шаблонность поведения делает человека скучным и незапоминающимся. Стереотипность – это дача оценок любому явлению, предмету или человеку в соответствии с тем, какую оценку дает ему общество вообще. Если принято считать всех бомжей или нищих людей пьяницами, стереотипный человек будет думать то же самое. Если его спросить, почему он так думает, то сможет ответить лишь одно: «Не знаю. Все так думают». «Все так думают», «все так чувствуют», «все так живут», все этого хотят» и т. д. – так мыслят лишь стереотипные люди, которые привыкли руководствоваться чужим мнением, а не своим.

Почему люди становятся стереотипными? Важнее даже задать вопрос: что им дает такая позиция? На самом деле стереотипный взгляд позволяет не нести ответственности за то, что думается и делается. Если человек в чем-то виноват, то он сможет привести целый ряд примеров того, как другие люди так же поступали. Если все делают это, не получая наказаний, значит, и стереотипному человеку можно, так как он знает, что это безопасно. При этом такой индивид никогда не сделает, не скажет или не будет отстаивать то, что еще никем не испробовано или подвергается сомнению всего общества… Таких людей не запоминают, потому что они являются «одними из».

Шаблонность мышления чем-то напоминает стереотипность. Человек копирует определенные модели поведения, фразы или способы общения с другими людьми. Люди навешивают шаблоны абсолютно на все, что видят и с чем сталкиваются. Платье в бутике будет считаться самым выгодным вложением денег, если на нем будет висеть ярлык бренда. При этом человек с шаблонным стилем мышления никогда не будет интересоваться, а действительно ли это платье является творением известного дизайнера. Подобным образом люди поступают со всем, что их окружает. Если бы на лоб можно было весить отличительные ярлыки качества и состоятельности, люди бы делали это с удовольствием, так как это занятие является самым главным делом их жизни.

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

Сюжет эгоизма (человеческих потребностей) предсказуем. Возвысили или что-то дали, индивид цветет и радуется. Как-то оскорбили, он отвечает агрессией и возникновением конфликтов. Если вы хотите идти на поводу у своих собственных реакций, тогда это ваш выбор. Но если вы хотите быть хозяином собственных желаний, придется стать выше всего, к чему привык обычный человек.

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

перейти наверх

Паттерн в психологии

Абсолютно все люди обладают своими паттернами, которые в них развивались годами. Под паттерном в психологии понимается определенное поведение индивида, которое не регулируется и повторяется при конкретных обстоятельствах.

Паттерн присущ всем людям, только у каждого он свой, чаще всего в больших количествах. Если вы замечаете за другим человеком определенное поведение на то или иное обстоятельство, тогда вы можете предугадать его реакцию в последующем. То же могут делать другие люди, которые замечают, что вы определенным образом реагируете на слова, поступки и прочие раздражители. Паттерн делает человека предсказуемым. Манипуляторы могут этим умело пользоваться.

Каждый человек родом из детства. И практически любое поведение человека психологи могут интерпретировать, как наработанную схему реакции в раннем детстве. То есть человек, взаимодействуя с родителями, друзьями и другими взрослыми людьми, выработал определенное поведение, которое помогало ему контактировать с окружающими. И, как зачастую бывает, вырастая, человек не меняет своих реакций, даже если жизненные ситуации изменились.

Смените свои старые привычки и реакции. Если вы продолжаете вести себя точно так же, как и раньше, то тем самым отнимаете у себя возможность жить так, как вам того хочется. Вам судьба дает новые жизненные ситуации, а вы реагируете на них старыми способами, чем отталкиваете их от себя, поскольку зачастую все механизмы человека направлены на защиту.

Вы уже не являетесь ребенком или даже тем человеком, каким были 10 лет назад. Но если вы ведете себя точно так же, как и тогда, то многие несчастья, которые сейчас вас окружают, являются результатом вашей негибкости. Вы не изменились вместе с жизнью, которая стала другой, тем самым наносите вред себе и близким вам людям. Ярким примером неприятия реальности и отсутствия изменений являются мамочки, которые продолжают опекать своих детей, даже когда им выполнилось уже 20 лет. Женщины продолжают говорить своим повзрослевшим детям, что нужно надеть шапку, так как на улице холодно, и вернуться до 9 часов вечера, поскольку уже будет темно. Дети уже выросли, а мамы как будто упорно не хотят замечать этого. Вот почему от такой ситуации страдают не только дети, которым стыдно за то, что они не могут проявлять самостоятельность, но и самим мамам, которые постоянно наталкиваются на агрессивное отношение детей, говорящих о своей взрослости.

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

Жизнь идет и меняется, даже если вам кажется совсем другое. Смените свои привычки и реакции в соответствии с тем, какая жизнь у вас сейчас. Присмотритесь, чему вам нужно научиться, от чего избавиться, что просто мешает. И начните вести себя по-новому, чтобы более эффективно взаимодействовать с той реальностью, которая вас окружает сейчас, а не когда-то – в детстве, 5 лет или даже полгода назад. Подстройтесь к той жизни, которая у вас есть сейчас, а не страдайте из-за того, что было раньше.

перейти наверх

Паттерны поведения

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

Паттерн можно сменить, что требует от человека осознанности. Если человек не замечает за собой шаблонного поведения, тогда нужно воспользоваться услугами психолога. Хорошо помогает взгляд со стороны или снимание видео, которое показывает, как человек себя ведет в конкретной ситуации. Люди обычно думают, что ведут себя не так, как есть на самом деле.

перейти наверх

Итог

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

 

psymedcare.ru

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *