Тема: mooFrame
Показать сообщение отдельно
Старый 21.08.2011, 12:05   #7
shybovycha
ПроЭктировщик
 
Аватар для shybovycha
 
Регистрация: 27.05.2007
Сообщений: 110
Написано 40 полезных сообщений
(для 33 пользователей)
Ответ: mooFrame

Потому и спросил. Log, Router, Renderer, Database - это ведь не классы по сути, а сборники процедур. Вынеси все методы просто в файлы и допиши глобальные переменные и ничего не поменяется ну вообще никак.
Database и Application должен быть синглтоном. Log, Router, Renderer - либо обычными классами как адаптеры, либо тоже синглтонами.
Не согласен - инкапсуляция, сударь, инкапсуляция! Глобальные переменные и функции - это, безусловно, существующий подход, но:

а) он морально устарел
б) используется в основном (если не исключительно) необразованными разработчиками
в) имеет множество недостатков (так, коль будет определена функция log(), возникнет довольно-таки хороший конфуз у интерпретатора; а коль называть функции logErrorMessageIntoFile() и иже - тогда возникает сомнение в необходимости разработки фреймворка; с другой стороны, глобальные переменные имеют точно такой же набор проблемм)

Синглетонами Log, Renderer и Router быть смысла нету - это static classes (жаль, что похапэ не имеет понятия о таком). У них и объектов-то быть не должно. Зато благодаря сему имеем два профита:

1) избавляемся от юродливых неймспейсов похапэ
2) разрешаем конфликты имен

Database и Application - два совершенно разных класса. Первый имеет сугубо абстрагированный функционал, посему он, как и Log, тоже статичен. А Application - наоборот, работает с внутренностями конкретного приложения, посему есть "обычный класс".

Я ж просил почитать исходные коды, а не имена файлов...

И если это нужно ТОЛЬКО тебе фо персонал пурпосес, то нафига было писать?
Дабы проверить наличие багов, расширить функционал, удостовериться в удобности для кого-либо еще окромясь меня. Да, про критику, пожалуй, писать было излишне...

И все равно - благодарю за дискуссию!
(Offline)
 
Ответить с цитированием