From c13661810efd3f41e96aec3d94a6d91b0eb6948e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ilkka=20Sepp=C3=A4l=C3=A4?= Date: Wed, 6 Sep 2017 22:31:21 +0300 Subject: [PATCH] #590 Add explanation for Flyweight --- flyweight/README.md | 95 +++++++++++++++++++++- flyweight/etc/flyweight.png | Bin 31900 -> 0 bytes flyweight/etc/flyweight.ucls | 135 ------------------------------- flyweight/etc/flyweight.urm.puml | 66 --------------- flyweight/etc/flyweight_1.png | Bin 63947 -> 0 bytes pom.xml | 1 + 6 files changed, 95 insertions(+), 202 deletions(-) delete mode 100644 flyweight/etc/flyweight.png delete mode 100644 flyweight/etc/flyweight.ucls delete mode 100644 flyweight/etc/flyweight.urm.puml delete mode 100644 flyweight/etc/flyweight_1.png diff --git a/flyweight/README.md b/flyweight/README.md index 469bb8626..9a0e13e19 100644 --- a/flyweight/README.md +++ b/flyweight/README.md @@ -16,7 +16,100 @@ tags: Use sharing to support large numbers of fine-grained objects efficiently. -![alt text](./etc/flyweight_1.png "Flyweight") +## Explanation +Real world example + +> Alchemist's shop has shelves full of magic potions. Many of the potions are the same so there is no need to create new object for each of them. Instead one object instance can represent multiple shelf items so memory footprint remains small. + +In plain words + +> It is used to minimize memory usage or computational expenses by sharing as much as possible with similar objects. + +Wikipedia says + +> In computer programming, flyweight is a software design pattern. A flyweight is an object that minimizes memory use by sharing as much data as possible with other similar objects; it is a way to use objects in large numbers when a simple repeated representation would use an unacceptable amount of memory. + +**Programmatic example** + +Translating our alchemist shop example from above. First of all we have different potion types + +``` +public interface Potion { + void drink(); +} + +public class HealingPotion implements Potion { + private static final Logger LOGGER = LoggerFactory.getLogger(HealingPotion.class); + @Override + public void drink() { + LOGGER.info("You feel healed. (Potion={})", System.identityHashCode(this)); + } +} + +public class HolyWaterPotion implements Potion { + private static final Logger LOGGER = LoggerFactory.getLogger(HolyWaterPotion.class); + @Override + public void drink() { + LOGGER.info("You feel blessed. (Potion={})", System.identityHashCode(this)); + } +} + +public class InvisibilityPotion implements Potion { + private static final Logger LOGGER = LoggerFactory.getLogger(InvisibilityPotion.class); + @Override + public void drink() { + LOGGER.info("You become invisible. (Potion={})", System.identityHashCode(this)); + } +} +``` + +Then the actual Flyweight object which is the factory for creating potions + +``` +public class PotionFactory { + + private final Map potions; + + public PotionFactory() { + potions = new EnumMap<>(PotionType.class); + } + + Potion createPotion(PotionType type) { + Potion potion = potions.get(type); + if (potion == null) { + switch (type) { + case HEALING: + potion = new HealingPotion(); + potions.put(type, potion); + break; + case HOLY_WATER: + potion = new HolyWaterPotion(); + potions.put(type, potion); + break; + case INVISIBILITY: + potion = new InvisibilityPotion(); + potions.put(type, potion); + break; + default: + break; + } + } + return potion; + } +} +``` + +And it can be used as below + +``` +PotionFactory factory = new PotionFactory(); +factory.createPotion(PotionType.INVISIBILITY).drink(); // You become invisible. (Potion=6566818) +factory.createPotion(PotionType.HEALING).drink(); // You feel healed. (Potion=648129364) +factory.createPotion(PotionType.INVISIBILITY).drink(); // You become invisible. (Potion=6566818) +factory.createPotion(PotionType.HOLY_WATER).drink(); // You feel blessed. (Potion=1104106489) +factory.createPotion(PotionType.HOLY_WATER).drink(); // You feel blessed. (Potion=1104106489) +factory.createPotion(PotionType.HEALING).drink(); // You feel healed. (Potion=648129364) +``` ## Applicability The Flyweight pattern's effectiveness depends heavily on how diff --git a/flyweight/etc/flyweight.png b/flyweight/etc/flyweight.png deleted file mode 100644 index 265d039247511ce2668cf1f620612dd4200bc3b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31900 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 diff --git a/flyweight/etc/flyweight.ucls b/flyweight/etc/flyweight.ucls deleted file mode 100644 index 633e385b8..000000000 --- a/flyweight/etc/flyweight.ucls +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/flyweight/etc/flyweight.urm.puml b/flyweight/etc/flyweight.urm.puml deleted file mode 100644 index 648c223af..000000000 --- a/flyweight/etc/flyweight.urm.puml +++ /dev/null @@ -1,66 +0,0 @@ -@startuml -package com.iluwatar.flyweight { - class AlchemistShop { - - LOGGER : Logger {static} - - bottomShelf : List - - topShelf : List - + AlchemistShop() - + enumerate() - - fillShelves() - + getBottomShelf() : List - + getTopShelf() : List - } - class App { - + App() - + main(args : String[]) {static} - } - class HealingPotion { - - LOGGER : Logger {static} - + HealingPotion() - + drink() - } - class HolyWaterPotion { - - LOGGER : Logger {static} - + HolyWaterPotion() - + drink() - } - class InvisibilityPotion { - - LOGGER : Logger {static} - + InvisibilityPotion() - + drink() - } - class PoisonPotion { - - LOGGER : Logger {static} - + PoisonPotion() - + drink() - } - interface Potion { - + drink() {abstract} - } - class PotionFactory { - - potions : Map - + PotionFactory() - ~ createPotion(type : PotionType) : Potion - } - enum PotionType { - + HEALING {static} - + HOLY_WATER {static} - + INVISIBILITY {static} - + POISON {static} - + STRENGTH {static} - + valueOf(name : String) : PotionType {static} - + values() : PotionType[] {static} - } - class StrengthPotion { - - LOGGER : Logger {static} - + StrengthPotion() - + drink() - } -} -AlchemistShop --> "-topShelf" Potion -HealingPotion ..|> Potion -HolyWaterPotion ..|> Potion -InvisibilityPotion ..|> Potion -PoisonPotion ..|> Potion -StrengthPotion ..|> Potion -@enduml \ No newline at end of file diff --git a/flyweight/etc/flyweight_1.png b/flyweight/etc/flyweight_1.png deleted file mode 100644 index f30225aa0413f756df9dde93f191b8b79f614938..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 63947 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%0AN4z9t8| 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
    iq-dADW>t1WlF~=Bl-tK?@kjQyCVo$RIhYE^1 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 decorator facade + flyweight