четверг, 12 февраля 2015 г.

MindStream. Затравочка. Паттерны проектирования использованные при разработке нашего приложения

Собственно про сам проект:

http://programmingmindstream.blogspot.ru/2014/11/mindstream.html
https://bitbucket.org/ingword/mindstream/overview

Теперь - "вводная":

Пришла мне тут в голову мысль - почему бы не привести "каталог примеров паттернов" которые уже были использованы при разработке нашего приложения.

Примеры от GoF или "синтетические примеры" это конечно хорошо, но "реальные" примеры - по-моему - лучше.

Тем более, что они - есть у нас.

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

Он не претендует на академичность, а призван показать - "как я это вижу".

Итак.

Паттерны будем брать отсюда:

Шаблон проектирования
Software design pattern

Мы будем брать оттуда по одному паттерну и будем находить примеры их использования в нашем приложении.

Посмотрим - сколько паттернов удастся описать.

Пока я нашёл вот что:

Паттерны проектирования использованные при разработке нашего приложения:

0. Введение в архитектуру приложения. Тут мы введём понятия и определения и основные концепции (http://habrahabr.ru/post/232955/).

1. Proxy (?).
2. Publisher/Subscriber (https://bitbucket.org/ingword/mindstream/commits/5d11d8d3b3047a8200e02ca2d562679f425b5afd).
3. Фабрика (https://bitbucket.org/ingword/mindstream/commits/5b23f798f23fe400f66e157c2182e4624fc51e98?at=B57).
4. Декоратор (https://bitbucket.org/ingword/mindstream/commits/e07225dd7a50df2dc4a078717bdea398b0d75a0d).
5. Синглетон (https://bitbucket.org/ingword/mindstream/commits/834de9280c082dd7803d9812854eb2daea96079b).
6. Inversion of control (Service Locator?) (https://bitbucket.org/ingword/mindstream/commits/991e1393409e661f7b01d90bd233c107fbe76c3e?at=B57).
7. Builder (?).
8. Command (?).
9. Iterator (?) (https://bitbucket.org/ingword/mindstream/commits/27eb90646d7c6896442d68b703efbc63c81a1fdb).
10. Immutable interface.
11. Lazy initialization.
12. Null object.
13. State (Контекст) (https://bitbucket.org/ingword/mindstream/commits/1a20a3b6d9108c1c96393598d9a1f77628de90de?at=B57) (http://programmingmindstream.blogspot.ru/2015/02/blog-post_41.html) (http://programmingmindstream.blogspot.ru/2015/02/blog-post_42.html).
14. Composite (Компоновщик) (https://bitbucket.org/ingword/mindstream/commits/13781dd096dccb5ee7befba462a789f748b61fbf).
15. MVC. У нас ВСЁ приложение это - MVC. Ну или "по мотивам" MVC. (https://ru.wikipedia.org/wiki/Model-View-Controller).
16. Strategy (Стратегия).

В этом списке есть ссылки на коммиты - классы, которые являются претендентами на описание того или иного шаблона проектирования.

Список - не полный. Он будет пополняться. По мере работы над статьями.

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

Те паттерны у которых стоят знак вопроса (?) - мне кажется реализованы в "отходе от классики". Посему просьба - относиться снисходительно и "не бить ногами".

Если в результате этой деятельности получится что-то стоящее, то я планирую переместить информацию сюда - https://bitbucket.org/ingword/mindstream/wiki/Home (https://bitbucket.org/ingword/mindstream/wiki/%D0%9F%D0%B0%D1%82%D1%82%D0%B5%D1%80%D0%BD%D1%8B%20%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F%20%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5%20%D0%BF%D1%80%D0%B8%20%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B5%20%D0%BD%D0%B0%D1%88%D0%B5%D0%B3%D0%BE%20%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F)

В виде уже wiki-справочника.

И создать там описание архитектуры приложения и проектную документацию. В том виде в котором по-моему мнению она должна быть.

Первый паттерн, который я хочу описать это - Декоратор.

"Следите за обновлениями".

Комментариев нет:

Отправить комментарий