Улучшение примера (см. 6-й пост):
AlexShop писал(а): |
Изменяем Factory что бы мог понимать файлы конфигурации и действовать согласно им. |
Если классы загружаются при помощи __autoload(), то изменять существующие фабрики ненадо.
Достаточно изменить __autoload() функцию которая загрузит новые фабрики.
Итак коротко:
1. __autoload() загружает новые фабрики
2. Новые фабрики создают прокси* объекты (вместо обычных)
3. Прокси объекты используют паттерн Interceptor что бы динамически влиять на программу (что-то наподобие АОП)
В таком случае вмешательство в оригинальный код минимально, все что надо изменить это __autoload() функцию.
------------------
* Вместо прокси могут быть декораторы.
Но т.к. добавлять новую функциональность к объекту не надо, то прокси предпочтительнее.
** Если фабрик в программе нет, то __autoload() может подменять обычные объекты на прокси.