I think I agree with this, although QtCreator has adopted the approach of putting all the required bits into the Core module, which is a mandatory plugin. The QtCreator executable is little more than a plugin loader and manager, with Core the first (and required) plugin loaded. So I suppose if you wanted a reusable plugin-based framework where any kind of functionality could be provided by a Core-like required plugin, this would be a way to do it. I don't know if I need to be so generic, so I will probably move the basic functionality into the main program.If you are going to always load a plugin into the program (simply because it requires its functionality to work) then it is easier (development wise) to make it a library.
That's another worry, but I think by careful segregation of functionality into a set of well-defined plugins, I can hopefully avoid this.Eventually everything depended (=mandatory dependency) on everything else
Yes, I like the "object pool" concept. I might get some significant advantage out of the pool and the objects in it signalling that they have been modified, and letting plugins decide if they are interested. This means creating QObject wrappers for my pure C++ computational classes, but that is not hard; more difficult is that many of my collections of object instances are based around boost smart pointers so management of wrapped object lifetimes will be a problem to be solved, probably by creating QObject smart pointers and eliminating QObject parent-child relations. (Or by designing collections such that the objects within them do not need to be wrapped).We also had another application system that was modeled after QtCreator -- i.e. it was composed of many small plugins that "pushed" functionality into a common pool of objects that other plugins (which those initial ones depended on) could pull from the pool throughout a known interface and use.
This is the hope, isn't it?The bright side was that adding new functionality was in total separation of existing functionality.
Bookmarks