Wiki
Clone wikiMindStream / Прошлые статьи / Паттерны проектирования использованные при разработке нашего приложения
MindStream. Затравочка. Паттерны проектирования использованные при разработке нашего приложения Собственно про сам проект:
http://programmingmindstream.blogspot.ru/2014/11/mindstream.html https://bitbucket.org/lulinalex/mindstream/overview
Теперь - "вводная":
Пришла мне тут в голову мысль - почему бы не привести "каталог примеров паттернов" которые уже были использованы при разработке нашего приложения.
Примеры от GoF или "синтетические примеры" это конечно хорошо, но "реальные" примеры - по-моему - лучше.
Тем более, что они - есть у нас.
Посему - я начинаю новый цикл статей - "Паттерны проектирования использованные при разработке нашего приложения".
Он не претендует на академичность, а призван показать - "как я это вижу".
Итак.
Паттерны будем брать отсюда:
Шаблон проектирования Software design pattern
Мы будем брать оттуда по одному паттерну и будем находить примеры их использования в нашем приложении.
Посмотрим - сколько паттернов удастся описать.
Пока я нашёл вот что:
Паттерны проектирования использованные при разработке нашего приложения:
-
Введение в архитектуру приложения. Тут мы введём понятия и определения и основные концепции (http://habrahabr.ru/post/232955/).
-
Proxy (?).
- Publisher/Subscriber (https://bitbucket.org/lulinalex/mindstream/commits/5d11d8d3b3047a8200e02ca2d562679f425b5afd).
- Фабрика (https://bitbucket.org/lulinalex/mindstream/commits/5b23f798f23fe400f66e157c2182e4624fc51e98?at=B57).
- Декоратор (https://bitbucket.org/lulinalex/mindstream/commits/e07225dd7a50df2dc4a078717bdea398b0d75a0d).
- Синглетон (https://bitbucket.org/lulinalex/mindstream/commits/834de9280c082dd7803d9812854eb2daea96079b).
- Inversion of control (Service Locator?) (https://bitbucket.org/lulinalex/mindstream/commits/991e1393409e661f7b01d90bd233c107fbe76c3e?at=B57).
- Builder (?).
- Command (?).
- Iterator (?) (https://bitbucket.org/lulinalex/mindstream/commits/27eb90646d7c6896442d68b703efbc63c81a1fdb).
- Immutable interface.
- Lazy initialization.
- Null object.
- State (Контекст) (https://bitbucket.org/lulinalex/mindstream/commits/1a20a3b6d9108c1c96393598d9a1f77628de90de?at=B57).
В этом списке есть ссылки на коммиты - классы, которые являются претендентами на описание того или иного шаблона проектирования.
Список - не полный. Он будет пополняться. По мере работы над статьями.
Сразу хочу предупредить тех, кто захочет сказать - "у вас слишком много паттернов, вы увлекаетесь чрезмерно" - мы специально делаем приложение "богатым" на паттерны. Поскольку оно специально создаётся, как "поле для примеров".
Те паттерны у которых стоят знак вопроса (?) - мне кажется реализованы в "отходе от классики". Посему просьба - относиться снисходительно и "не бить ногами".
Если в результате этой деятельности получится что-то стоящее, то я планирую переместить информацию сюда - https://bitbucket.org/lulinalex/mindstream/wiki/Home
В виде уже wiki-справочника.
И создать там описание архитектуры приложения и проектную документацию. В том виде в котором по-моему мнению она должна быть.
Первый паттерн, который я хочу описать это - Декоратор.
"Следите за обновлениями".
Updated