flyweight pattern

17
Prepared By : Hasnaeen Rizvi Rahman Astha School of Advanced Computing

Upload: shakil-ahmed

Post on 17-Jun-2015

654 views

Category:

Education


1 download

DESCRIPTION

Flyweight pattern

TRANSCRIPT

Page 1: Flyweight pattern

Prepared By : Hasnaeen Rizvi RahmanAstha School of Advanced Computing

Page 2: Flyweight pattern

Use sharing to support large number of fine-grained objects efficiently.

Page 3: Flyweight pattern

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.

Page 4: Flyweight pattern
Page 5: Flyweight pattern
Page 6: Flyweight pattern
Page 7: Flyweight pattern
Page 8: Flyweight pattern

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.

Page 9: Flyweight pattern
Page 10: Flyweight pattern
Page 11: Flyweight pattern

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.

Page 12: Flyweight pattern

Client passes extrinsic state to flyweight.

Client invokes FlyweightFactory to create Flyweight object.

Page 13: Flyweight pattern

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.

Page 14: Flyweight pattern

Removing extrinsic state. Managing shared objects.

Page 15: Flyweight pattern

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.

Page 16: Flyweight pattern

Entity XML could be something like…<Entity> <ID>1</ID> <Name>Entity 1</Name> <Attribute>

<Name>Entity Attribute</Name><Children> <Attribute> <Name>OrgChart</Name>

<Children> <Attribute> <Name>Type</Name>

<Value>Corporation</Value> </Attribute> <Attribute> <Name>Country</Name>

<Value>Bangladesh</Value> </Attribute></Children>

</Attribute></Children>

</Attribute></Entity>

Page 17: Flyweight pattern

Use Flyweight pattern to reduce memory usage for attributes.