Joerg Hoehle wrote:
More precisely, I think I understand the abstract requirement, as it's nothing new and seen in many places, e.g. the separation between constructing parts of pipeline, clunging it together and finally have something flow through the pipes,
It occurs to me I did not answer your implicit question: Do I need to worry about to-be?
If you use the Family class and the kids slot to build up your application models, to-be and not-to-be get called on kids as they enter and leave the model.
In my applications, I start with:
(setf *system* (to-be (make-instance 'system)))
Then, when I want a new window:
(push (make-instance 'cello-window :kids <whatever>) (kids *system))
The declarative model covers the rest.
The only thing you need to worry about is adding two instances to the model when they care about each other. Then they have to get added together, so:
(push A (kids *system*)) (push B (kids *system*))
...will fail if A cares about B. So:
(setf (kids *system*) (append (list A B) (kids *system*)))