Tolka>Как при такой реализации будут доступны новые модули и изменение функционала? Без переписи существующих модулей?
Проверкой. Типа
module = CreateObject("MyModule");
if (module == null) return;
if (module.version < 231) return;
Tolka>Идея ядра как раз в том чтобы служить коммуникационной средой между различными модулями (которые ничего не должны знать друг об друге), и управление ресурсами. Тогда упрощается разработка и апгрейд модулей, происходящие независимо друг от друга.[»]
Идеи ядер бывают разные. Надо учитывать, что изоляция модулей чинит потерями функциональности. Существует и неизбежность продублирования кода. Так что я придерживаюсь к ОО подходу - множество взаимосвязанных объектов. Ядро в этом случае обычный объект как и все осталньные. Разве что он хранист основную структуру для нормального функционирования системы.
object Core
{
public:
object db_engine;
object upload_engine;
object message_engine;
function Init()
{
db_engine = CreateObject("DB_Engine");
upload_engine = CreateObject("Upload_Engine");
message_engine = CreateObject("Msg_Engine");
db_engine.Init(this):
upload_engine.Init(this):
message_engine.Init(this):
}
}
function Main()
{
core = CreateObject("Core")
core.Init();
}
Надеюсь, все понятно. Каждый объект видит ядро, а через него и все остальные модули.