Ik heb een vraagje over het Flyweight pattern...
Ik heb een reeks buttons (zeg voor het gemak 10 rijen van 10 buttons). Deze buttons zijn allemaal leeg; ze hebben geen kleur, geen value, alleen aparte coördinaten. Echter kunnen buttons ook verkleuren aan de hand van een actie. Dit is dus mogelijk:
- Lege button
- Rode button
- Gele button
Oftewel, de intrinsic state is het type button (leeg, geel, rood) en de extrinsic state zijn de coördinaten waar de button is te vinden?
Nu kom ik er niet goed uit wat voor concrete Flyweight classes ik moet maken... Ik heb alle voorbeelden op Google bekeken en ik heb het hoofdstuk over Flyweights uit mn GoF boek gelezen, maar het wordt me niet echt duidelijk...
Ik heb nu dit:
- ConcreteFlyweights: EmptyButton, YellowButton, RedButton
Maar dan zijn er ook nog UnsharedConcreteFlyweights, en dat is het punt waarop ik het niet meer begrijp... Is dit relevant voor mij? In het GoF boek werden bijvoorbeeld 'rows' en 'columns' aangehaald als voorbeelden van UnsharedConcreteFlyweight, echter zijn sommige rows (en columns) identiek aan elkaar als in dat ze allemaal 10 lege buttons hebben, terwijl het punt van een UnsharedConcreteFlyweight toch is dat hij niet gedeeld wordt?
Stel dat ik alsnog een row en column aanmaak, dan moeten andere ConcreteFlyweights weer inheriten van deze UnsharedConcreteFlyweight? Dit zie ik echter niet terug op de UML voorbeelden.
Voor het gemak even een illustratie van het Flyweight pattern zoals deze op internet te vinden is:
Ik heb een reeks buttons (zeg voor het gemak 10 rijen van 10 buttons). Deze buttons zijn allemaal leeg; ze hebben geen kleur, geen value, alleen aparte coördinaten. Echter kunnen buttons ook verkleuren aan de hand van een actie. Dit is dus mogelijk:
- Lege button
- Rode button
- Gele button
Oftewel, de intrinsic state is het type button (leeg, geel, rood) en de extrinsic state zijn de coördinaten waar de button is te vinden?
Nu kom ik er niet goed uit wat voor concrete Flyweight classes ik moet maken... Ik heb alle voorbeelden op Google bekeken en ik heb het hoofdstuk over Flyweights uit mn GoF boek gelezen, maar het wordt me niet echt duidelijk...
Ik heb nu dit:
- ConcreteFlyweights: EmptyButton, YellowButton, RedButton
Maar dan zijn er ook nog UnsharedConcreteFlyweights, en dat is het punt waarop ik het niet meer begrijp... Is dit relevant voor mij? In het GoF boek werden bijvoorbeeld 'rows' en 'columns' aangehaald als voorbeelden van UnsharedConcreteFlyweight, echter zijn sommige rows (en columns) identiek aan elkaar als in dat ze allemaal 10 lege buttons hebben, terwijl het punt van een UnsharedConcreteFlyweight toch is dat hij niet gedeeld wordt?
Stel dat ik alsnog een row en column aanmaak, dan moeten andere ConcreteFlyweights weer inheriten van deze UnsharedConcreteFlyweight? Dit zie ik echter niet terug op de UML voorbeelden.
Voor het gemak even een illustratie van het Flyweight pattern zoals deze op internet te vinden is:
