4.18.24 Movement Legacies, Reflection, and Review.pptx
Flyweight pattern
1. Prepared By : Hasnaeen Rizvi Rahman
Astha School of Advanced Computing
2. Use sharing to support large number of
fine-grained objects efficiently.
3. An application uses many objects.
A flyweight is a shared object that can be
used in multiple contexts simultaneously.
It acts as an individual object in each
context.
The key concept is the distinction
between intrinsic and extrinsic state.
4.
5.
6.
7.
8. An application uses a large number of
objects.
Storage costs are high because of the
sheer quantity of objects.
Most objects state can be made extrinsic.
Many groups of objects may be replaced
by relatively few shared objects once
extrinsic state is removed.
The application doesn’t depends on
object identity.
9.
10.
11. Flyweight (Glyph)
• Declare an interface through which flyweights can receive
and act on extrinsic state.
ConcreteFlyweight (Character)
• Implements the Flyweight interface and adds storage for
intrinsic state, if any.
UnsharedConcreteFlyweight (Row,Column)
• Not all flyweight subclasses need to be shared.
Flyweight Factory
• Creates and manages flyweight objects.
• Ensures that flyweights are shared properly.
Client
• Maintains a reference to flyweights
• Computes or stores the extrinsic state of flyweight.
12. Client passes extrinsic state to flyweight.
Client invokes FlyweightFactory to create
Flyweight object.
13. Flyweight may introduce run-time cost.
Storage savings are a function of several
factors:
• The reduction in the total number of instances
that comes from sharing.
• The amount of intrinsic state per object.
• Whether extrinsic state is computed or stored.
15. Design an application which stores list of
entities.
• Entity: It has an ID, Name and an attribute.
• Attribute: Attributes are composite data where each
attribute is either a leaf or a composite. It has all
child management operation suggested in
composite pattern. A leaf attribute have a name and
value. A Composite attribute have a name but no
value. Attribute returns an XML having Name and
Value node. The composite attribute returns the list
of child attribute XML.