2NetFly
-
Лоадер для двух классов
Существуют два класса, объекты которых хранят в себе некоторые данные. Для того чтоб абстрагироваться от источника данных (БД, ini файл, xml файл etc), для загрузки данных в объекты используются так называемые лоадры (Loaders). Т.е. (псевдокод):
Возникла следующая ситуация: данные для обоих классов хранятся в одном xml конфигурационном файле и парсить его два раза в каждом из лоадеров нет никакого желания. В голову пришло два решения.
1. Общий лоадер для A и B:
или
Просто, но как-то некрасиво.
2. Некий вспомогательный класс-менеджер:
Вроде бы логично, однако имеет место оверхед в ConfigManager. Ведь конфигурационный файл нужно парсить на этапе создания объекта(иначе ConfigManager не имеет никакого смысла) и хранить данные в самом объекте до того, пока их не запросит лодер.
Больше ничего придумать не могу. Посоветуйте, пожалуйста, какое-нибудь элегантное решение.
Постскриптум. Если ошибся форумом - перенесите, пожалуйста, в нужный.
Существуют два класса, объекты которых хранят в себе некоторые данные. Для того чтоб абстрагироваться от источника данных (БД, ini файл, xml файл etc), для загрузки данных в объекты используются так называемые лоадры (Loaders). Т.е. (псевдокод):
PHP:
a = A->new(...);
b = B->new(...);
loaderA->load(a);
loaderB->load(b);
1. Общий лоадер для A и B:
PHP:
loader = Loader->new(config.xml);
loader->load(a, b);
PHP:
loader = Loader->new(config.xml);
loader->loadA(a);
loader->loadB(b);
2. Некий вспомогательный класс-менеджер:
PHP:
cm = ConfigManager->new(config.xml); // в конструкторе загрузка и парсинг конфига
loaderA = LoaderA->new(cm);
loaderB = LoaderB->new(cm);
...
loaderA->load(a);
loaderB->load(b);
Больше ничего придумать не могу. Посоветуйте, пожалуйста, какое-нибудь элегантное решение.
Постскриптум. Если ошибся форумом - перенесите, пожалуйста, в нужный.
