Win a copy of Programmer's Guide to Java SE 8 Oracle Certified Associate (OCA) this week in the OCAJP forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

flyweight pattern

 
JigaR Parekh
Ranch Hand
Posts: 112
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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
[Thumbnail for flywe050.gif]
Flyweight pattern diagram
 
deepak adlakha
Ranch Hand
Posts: 325
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
What exactly you mean by UnsharedConcreteFlyweight?
 
JigaR Parekh
Ranch Hand
Posts: 112
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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.
 
Asha Pathik
Ranch Hand
Posts: 143
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic