Вот что мне больше всего выносит мозг в сложившейся ситуации? Паттерны! Куда не посмотришь, что не прочитаешь — везде Банда четырех и паттерны, паттерны, паттерны…
Блин. Я уже говорил что это бесконечный холивар на тему того кто лучше сможет выпендриться. Код должен быть правильным не спорю, но не через безусловное следование авторитету Банды четырех. Паттерны нужны, более того они используются мной в самых простых конструкциях из моих попыток разработки. Но используются они потому что так написано, а почему именно так я пока не могу сказать. А значит пока этого не пойму, я не смогу это принять и уж тем более полюбить…
Вернемся к нашему опусу. Нам нужно свободно уметь отвечать на следующие вопросы:
Знание ОО шаблонов проектирования (паттернов):
- умение объяснить, зачем они нужны, когда они нужны
- умение обосновать выбор того или иного паттерна
- умение определять тот или иной паттерн по его коду
- знание шаблонов для других парадигм программирования
Знание ОО антипаттернов:
- умение объяснить, зачем необходимо их знание
- умение определять тот или иной паттерн по его коду
- рассказать про возможные выходы из паттернов
Мда… Приступим.
Паттерны это шаблоны или методы программирования, проектирования и управления оформленные в виде некой идеи. Каждый программист вроде как обязан их знать и использовать, или в случае антипаттернов не использовать. Соответственно под каждый язык паттерны имеют свой вид. Их достаточно много и общий список все же лучше почитать на Википедии -> Патттерны и Антипаттерны. Хорошее описание есть вот тут. Мне оно больше нравится, во первых вполне понятно расписано и во вторых — это же хабр! читайте комменты.
Так вот, опять же почитал что пишут другие и только укрепился в своем понимании. Я еще не настолько хорошо знаю ООП рограммирование чтобы использовать это осознанно. А не осознанно пожалуйста! Проcтой пример, я использую в программе объект CLLocationManager и делегирую контроллеру его функции. Я же об этом писал, но скажу еще раз. В VB и Delphi для того чтобы отрисовываь местонахождение, я бы заводил таймер и каждые несколько секунд запрашивал бы у навигации координаты, интерпретировал их и отрисовывал точку на карте. В Objective C я создаю объект, делегирую обязанность посылать сообщение контроллеру о изменении положения больше чем на 10 метров (к примеру). У контроллера переопределяю обработчик сообщения о изменения местоположения. А как я его буду обрабатывать это уже моя задача как программиста, могу сохранить или отправить куда нибудь, а могу использовать в качестве контроллера объект MKMapView и делегировать ему обязанность отрисовывать маршрут или точку на карте.
Я грубо говоря ничего незнаю о паттернах, но использую! И так очень много где. Примерно так же и с синглтоном. Описания везде туманные, а вот в книжке четко написали для чего это нужно. Например чтобы Объект Хранилище было единственным, к нему имели доступ все участки кода и его состояние регулировалось нужными правилами.
Жуть в общем эти паттерны. 🙂 А сколько их, да еще и в разных вариантах перевода. Вобщем нужно брать книжку Банды Четырех и потом всем говорить что я ее читал 🙂
А для себя запомню основные: Одиночка, Делегат, Наблюдатель и MVC о котором будет написано подробно дальше.
Комментариев нет