Паттерны в PHP (Facade)
На мой взгляд этот паттерн зря называют фасадом. Дело в том, что в русском языке он довольно прочно ассоциируется с постройками, с лицевой стороной здания. Но суть паттерна несколько другая. Это скорее больше похоже на пульт управления умным домом, если уж рассматривать его с точки зрения домохозяйств. Допустим у вас дома есть кофемашина, телевизор и электрический тазик ноги парить. Жена моя недавно себе купила. Вот теперь представьте, что приходите вечером с работы домой. Уставший. А тут на тебе: нужно включить кофемашину, выбрать режим "руссиано", включить телевизор, найти канал с футболом, включить тазик, выбрать режим массажера с подогревом. ...
Паттерны в PHP. Компоновщик (Composite).
Компоновщик (Composite), это паттерн, который помогает разрулить ситуацию, не предусмотренную штатными средствами. А именно множественное наследование. Впрочем он может быть полезен и при работе с одним классом, но все по порядку.
Один из четырех китов ООП - наследование последнее время всё чаще предается гонениям. Заменяющий его паттерн "Декоратор" и делегирование мы уже рассматривали. Теперь еще один, который наносит наследованию хук слева. Компоновщик. Уже из названия видно, что он должен что то скомпоновать, совместить, собрать в кучу. Как обычно, рассмотрим пример из жизни. Допустим мы хотим испить горячего кофе со сливками (как то странно звучит название водки...). Если ...
Паттерны в PHP (Decorator)
Этот паттерн лучше объяснять снизу вверх. То есть по мере поступления проблем. Приступим. Если кто читал предыдущую статью, то мог обратить внимание, что я имел наглость сравнить ООП с фаст-фудом. Буду последовательным, и возьму пример оттуда. Тем более он, на мой взгляд, весьма подходящий. Представим себе точку быстрого питания, где решили делать гамбургеры. Нет ничего проще - берем два кусочка хлеба и суем между ними котлетку:
...
Наследование или делегирование.
Те, кто взялся изучать ООП, много раз слышали мантру, что оно держится на трех китах: Инкапсуляция, Полиморфизм, Наследование. Первых двух китов оставим в покое, пусть себе плавают. А вот с наследованием не все так гладко. Последнее время все чаще слышатся призывы по возможности отказываться от наследования, заменяя его делегированием. Давайте разберемся, что вкладывается в эти понятия и с чем их употреблять в пищу.
Наверняка вы знаете, что механизм наследования включается директивой extends. Однако мало кто задумывался над тем, почему так. Почему назвали extends (расширение), а не скажем inheritage (наследование как есть). Все дело в том, что наследование - ...
Паттерны в PHP (Registry)
Продолжим цикл статей про паттерны. Прошлая статья моя была про конструкцию global. Если кто читал, там мельком описывался паттерн Registry (реестр). Ну вот сейчас попробую описать его немного подробнее, разжевать в манную кашу, так сказать. Вообще суть любого паттерна - упростить то, что мы до этого специально усложнили.
Давайте проследим "эволюцию" зарождения патерна Registry. Сначала было слово... Нет, не так далеко. Сначала были машинные коды. Потом, для упрощения, появились языки программирования (ЯП). Это своего рода программы, фактически переводящие человеческую речь в те самые машинные коды. Первые ЯП были просты и примитивны, и, как ...
Паттерны в PHP (Singleton)
Начинающие программисты, столкнувшись с ООП, обязательно натыкаются на необходимость использования (ну или хотя бы понимания) шаблонов проектирования. И это многих пугает. Мало того, что сама парадигма достаточно сложна для понимания, так еще и паттерны какие-то. И хотя они как раз и придуманы для облегчения использования парадигмы, на первых порах играют как раз обратную роль. А всё из-за того, что те, кто придумывают паттерны, давно в ООП как рыба в воде, соответственно и объясняют их со своей колокольни. И получается замкнутый круг. Не зная паттернов сложно грамотно использовать ООП парадигму, однако не зная ООП сложно понять эти самые паттерны. А все ...
Роман