One of Frank Lloyd Wright's Organic Architecture principles, this seems to prefigure the fractal concept of "scale symmetry", one of the most striking and beautiful aspects of Systems As Living Things.
From the Organic Architecture page: ORGANIC denotes in architecture not merely what may hang in a butcher shop, get about on two feet, or be cultivated in a field. The word organic refers to "entity"; perhaps integral or intrinsic would therefore be a better word to use. As originally used in architecture, organic means Part To Whole As Whole Is To Part. So "entity as integral" is what is really meant by the word organic. INTRINSIC.
Err, can you explain this a bit more? Do you mean that my eye is made from lots of little copies of itself? -- Dave Harris
Not quite, though you might design, say, a theatre, using the arrangement of rods and cones in an eye as a metaphor. A better example is the structure of ferns. Michael Barnsley cut his teeth producing tiny and most elegant algorithms for generating images of fern leaves and branches. He generalized his work into the concept of Iterative Function Systems and seems to be making a fair buck using them as a compression and image analysis/explication techniques - see www.cis.ohio-state.edu for lots more on this.
In our context, we might pursue the design of a large-scale distributed system by extending the patterns designed into each of its elements. This is not always sensible - economies of scale have a habit of biting hard. It is, however, a good way to think about scaling - even if different patterns apply, the effect may still be made consistent by way of Part To Whole As Whole Is To Part.
-- Peter Merel
Yes, I know what fractals are. Basing a theatre on an eye metaphor might be a good idea, but surely is not relevant to whether it has fractal design. And scaling issues do bite, to the point where I think the guideline is misleading.
It usually seems that scaling issues bite us when they deal with physical constraints like time and space. In logic intensive problems, scaling usually works okay. --Michael Feathers
I suspect that what Wright is getting at is better expressed by Alexander's notion of a generative grammar. For example, your two eyes have a lot in common because they are generated from the same part of the grammar of human bodies (and not because they have the same function). The two things are in physically different places, but the grammar unifies them and we sense this unity. Where the grammar is recursive we get fractals, but that's just a special case.
In OO we use generalization/specialization as a mechanism of extension. If the specializations do not break any guarantees of the general stuff we can have substitutability. It seems to me that generative things may forego substitutability because the generated item is meant to be used in a different context. Different eye socket for instance. Perhaps there is something in this in software. Patterns are specializations that are not necessarily substitutable. DesmondDSouza calls them refinements, I think. -- Michael Feathers
What truly comes across as organic is (a) the commonality in design of different things, coupled with (b) adaptations to local circumstance. (The adaptations might be extreme, as when the hand is a modified foot.)
-- Dave Harris
Are there any non-recursive grammars? Dildar Marhas
How about
bit ::= 0 | 1
The question is whether there are any interesting non-recursive grammars.
The Composite Pattern is the essence of Part To Whole As Whole Is To Part in OO design. I find that the introduction of the Composite Pattern often has a dramatic and almost mystical impact on the composability of a set of objects. And sometimes a deleterious effect on its understandability.
I've noticed that the Composite Pattern is especially good when you are describing man-made things, and not so good when you are describing natural things. It is good for describing math, organizations, VLSI chips, and programs. It is not so good at describing plants, animals, or ecosystems. I have wondered whether Part To Whole As Whole Is To Part is not so much a property of nature as it is of humans; we want things to be that way and so we force nature into our box.
I think Composite Pattern is capable of describing any recursively composable structure. When one tries to describe natural systems like plant etc, one is dealing with a depth and breadth which is mind-boggling. Just what would the primitives be in such a composite? Quarks? How would we represent the 'irreversible composites' (chemical reactions). Also how can we represent the temporal aspects of such composites.
In any case, I feel that Composite Pattern, being a generative pattern, is capable of grasping the temporal aspects of changing structure of objects. An object realized through some Composite Pattern can be thought of as a point-in-time view. The structural evolution (Schema Evolution) of such an object can be traced by the Composite Pattern. There may be cases when a structural change in the object requires the Composite Pattern itself to change ie it requires creation of new types of components.
The Composite Pattern can represent changes in behavior too.
See original on c2.com