Потому и спросил. Log, Router, Renderer, Database - это ведь не классы по сути, а сборники процедур. Вынеси все методы просто в файлы и допиши глобальные переменные и ничего не поменяется ну вообще никак.
Database и Application должен быть синглтоном. Log, Router, Renderer - либо обычными классами как адаптеры, либо тоже синглтонами.
|
Не согласен - инкапсуляция, сударь, инкапсуляция! Глобальные переменные и функции - это, безусловно, существующий подход, но:
а) он морально устарел
б) используется в основном (если не исключительно) необразованными разработчиками
в) имеет множество недостатков (так, коль будет определена функция
log(), возникнет довольно-таки хороший конфуз у интерпретатора; а коль называть функции
logErrorMessageIntoFile() и иже - тогда возникает сомнение в необходимости разработки фреймворка; с другой стороны, глобальные переменные имеют точно такой же набор проблемм)
Синглетонами Log, Renderer и Router быть смысла нету - это static classes (жаль, что похапэ не имеет понятия о таком). У них и объектов-то быть не должно. Зато благодаря сему имеем два профита:
1) избавляемся от юродливых неймспейсов похапэ
2) разрешаем конфликты имен
Database и Application - два совершенно разных класса. Первый имеет сугубо абстрагированный функционал, посему он, как и Log, тоже статичен. А Application - наоборот, работает с внутренностями конкретного приложения, посему есть "обычный класс".
Я ж просил почитать
исходные коды, а не имена файлов...
И если это нужно ТОЛЬКО тебе фо персонал пурпосес, то нафига было писать?
|
Дабы проверить наличие багов, расширить функционал, удостовериться в удобности для кого-либо еще окромясь меня. Да, про критику, пожалуй, писать было излишне...
И все равно - благодарю за дискуссию!