The flyweight design pattern tries to minimize the amount of data needed by sharing as much common read-only properties as possible. This is especially convenient if we have large numbers of object with common read-only properties and only a limited amount of memory. We put the common values in the flyweight and initialize it once and from that point on we use it as read-only access.

An example in C++:
Now we need some "objectfamilies" which are using the TypeManager. Let's assume it looks like this: view source
Now let's see how we can use the TypeManager with a simple example: view C++ source
So we have an multiple entities, and each entity knows its type, so there is no need to store a "modelname" in each entity (wasting memory) We can use the entitytype and with that lookup the "modelname" in the TypeManager. However many instance of "Creatures" and "Weapons" we create, we keep the memory requirements down to a minimum by sharing the common read-only properties.

JSN Teki template designed by