> Complicated objects are not objects, they are a bunch of objects that have
> been mashed together. If you have a bunch of objects that need to cooperate
> to perform complex operations; then you should create a simple Facade
> object that knows how to do these complex operations.
Go back and reread my statements about incestuous inter-pointer relationships.
There are many cases where what you say here is a fine resolution to the problem of object growth. In such cases, by all means your resolution is to be preferred.
I have seen cases where the object semantics and state is just plain complicated, and divvying the damn thing into more objects only makes it worse. The Process object in the SGI debugger is a good example of one such. The Window object in most windowing APIs is another.