Forums Register Login

flyweight pattern

+Pie Number of slices to send: Send
Intent of flyweight pattern is sharing of large number of fine grained objects.

i can understand that flyweight does this by separating intrinsic and extrinsic, storing intrinsic state in concrete flyweight and let client store or compute extrinsic state.

FlyWeightFactory is responsible for creating ,storing and sharing fly weight objects.

my question is what is purpose of UnsharedConcreteFlyweight?
flywe050.gif
Flyweight pattern diagram
[Thumbnail for flywe050.gif]
+Pie Number of slices to send: Send
What exactly you mean by UnsharedConcreteFlyweight?
+Pie Number of slices to send: Send
In GOF book below is explained but not it is not at all clear to me what exactly it does and in what scenario it should be used

UnsharedConcreteFlyweight :
Not all Flyweight subclasses need to be shared. The Flyweight interface enables sharing; it doesn't enforce it. It's common for UnsharedConcreteFlyweight objects to have ConcreteFlyweight objects as children at some level in the flyweight object structure (as the Row and Column classes have).

Rest of elements in GOF diagram are clear to me.
+Pie Number of slices to send: Send
Hi Jigar,

After your post I did some Googling on flyWeight pattern and following are some main points that I think we must keep in mind while using Flyweight pattern in our application:

1) Flyweight is used when we want to avoid creating multiple objects of the same kind and share existing instances. These objects are shared based on the intrinsic state + extrinsic state. I believe this part is clear to you.

2) We can have a set of flyweights which we don't want to share. Now lets discuss this part. We need to remember the following points for the unshared flyweights:
a) This is an optional part of the flyweight. We need not have in all the flyweight pattern implementations.
b) Understand when we use it. For example:- if we want to design an application where we have shopping cart collection object containing different products we can use Flyweight pattern. Now for each product we have an intrinsic state like the name, description, feature set etc. and extrinsic state like the number of this product present in shopping cart. Here we can easily use shared flyweight for all the different product objects. But we can have some products like assembled computer which cannot be same for all customers who plans to buy it. For this type of products we might wish to create a new object whenever any customer adds it in their basket.

Hope this helps,
Asha
Try 100 things. 2 will work out, but you will never know in advance which 2. This tiny ad might be one:
a bit of art, as a gift, the permaculture playing cards
https://gardener-gift.com


reply
reply
This thread has been viewed 1950 times.
Similar Threads
Chap5: Strings and Flyweight
Is EJB pooling related with flyweight pattern ?
difference between Flyweight and Singleton Pattern
The importance of motivation
GOF Question (Composite vs Flyweight)
More...

All times above are in ranch (not your local) time.
The current ranch time is
Mar 29, 2024 06:52:10.