Шаблоны проектирования очень спорная, но полезная вещь, которая помогает общественным языком описать унифицированые вещи. Перевод данной статьи рассказывает об инструментах Magento, которые используются для посторения ядра и сторонних расширений.
Factory(Фабрика):
Исполнение концепции фабрики, которая решает проблемы создания объектов без точного указания класса объекта, который будет создан.
Singleton(Одиночка):
Предотвращает повторное создание объекта с тем же классом. При повторном использовании, шаблон ссылается на уже созданный объект.
Registry(Регистр):
Хранит общую информацию приложения для различных компонентов, используется как интерфейс обмена информацией, безопасная замена глобальных переменных.
Prototype:
It determines the type of object to create. In Magento it can be Simple, Configurable, Grouped, Bundle, Downloadable or Virtual types.
Observer(Наблюдатель):
В основном используется, как распределённая система обработки событий. Существует субъект который инициирует событие, субъекты подписанные на данное событие получают оповещение. Субъекты ожидающие событие - observers(наблюдатели).
Инициация события объектом.
Регистрация субъектов на событие, где указана обработка данного события.
Object Pool(Пул объектов):
Используется для перереиспользования ресурсоемких объектов.
Iterator(Итератор):
Используется для перебора элементов коллекции.
Lazy Loading(Ленивая инициализация):
Инициализация по востребованию.
Decorator(Декоратор):
Используется для изменения поведения во время исполнения.
Helper(Помошник):
Множественные методы доступные для использования в других объектах. К примеру, возможно, использовать методы помошника ядра везде в приложении.
Service Locator(Регистратор сервисов):
Регистрирует различные сервисы, также позволяет их переопределять(модели, ресурсы, фабрики, ...).
Factory(Фабрика):
Исполнение концепции фабрики, которая решает проблемы создания объектов без точного указания класса объекта, который будет создан.
$product = Mage::getModel('catalog/product');
Singleton(Одиночка):
Предотвращает повторное создание объекта с тем же классом. При повторном использовании, шаблон ссылается на уже созданный объект.
$category = Mage::getSingleton('catalog/session');
Registry(Регистр):
Хранит общую информацию приложения для различных компонентов, используется как интерфейс обмена информацией, безопасная замена глобальных переменных.
Mage::register('key',$value); //stores $currentCategory = Mage::registry('key'); //retrives
Prototype:
It determines the type of object to create. In Magento it can be Simple, Configurable, Grouped, Bundle, Downloadable or Virtual types.
Mage:getModel('catalog/product')->getTypeInstance();
Observer(Наблюдатель):
В основном используется, как распределённая система обработки событий. Существует субъект который инициирует событие, субъекты подписанные на данное событие получают оповещение. Субъекты ожидающие событие - observers(наблюдатели).
Инициация события объектом.
Mage::dispatchEvent('event_name', array('key'=>$value));
Регистрация субъектов на событие, где указана обработка данного события.
<config> <global> <events> <event_name> <observers> <unique_name> <class>Class_Name</class> <method>methodName</method> </unique_name> </observers> </event_name> </events> </global> </config>
Object Pool(Пул объектов):
Используется для перереиспользования ресурсоемких объектов.
$id = Mage::objects()->save($object); $object = Mage::objects($id);
Iterator(Итератор):
Используется для перебора элементов коллекции.
Mage::getModel('catalog/product')->getCollection();
Lazy Loading(Ленивая инициализация):
Инициализация по востребованию.
$collection_of_products = Mage::getModel('catalog/product') ->getCollection();
Decorator(Декоратор):
Используется для изменения поведения во время исполнения.
<script type="text/javascript">decorateTable('product_comparison');</script>
Helper(Помошник):
Множественные методы доступные для использования в других объектах. К примеру, возможно, использовать методы помошника ядра везде в приложении.
Mage::helper('core');
Service Locator(Регистратор сервисов):
Регистрирует различные сервисы, также позволяет их переопределять(модели, ресурсы, фабрики, ...).
Mage::getModel('catalog/product') and $installer->getTable('customer/address_entity');
Комментариев нет:
Отправить комментарий