Search code examples
javaflyweight-pattern

Flyweight Examples in Java


I am trying to create a flyweight object in Java. I've worked with a similar concept in Objective-C (Singleton Classes in Objective-C // I believe they are the same thing).

I am trying to find a tutorial or an example or explanation online to learn how to create a flyweight object and use it, but I've searched on Google and I can't find anything descent. I went through 10 pages and they basically all plagiarize from one website which just explains the concept. I understand the concept - I need something to help me/teach me how to implement it in Java.

Anyone has any suggestions/tutorials?

Thanks!


Solution

  • The Wikipedia entry for the flyweight pattern has a concrete Java example.

    EDIT to try and help the OP understand the pattern:

    As noted in my comment below, The point of the flyweight pattern is that you're sharing a single instance of something rather than creating new, identical objects.

    Using the Wiki example, the CoffeeFlavorFactory will only create a single instance of any given CoffeeFlavor (this is done the first time a Flavor is requested). Subsequent requests for the same flavor return a reference to the original, single instance.

    public static void main(String[] args) 
    {
        flavorFactory = new CoffeeFlavorFactory();
        CoffeeFlavor a = flavorFactory.getCoffeeFlavor("espresso");
        CoffeeFlavor b = flavorFactory.getCoffeeFlavor("espresso");
        CoffeeFlavor c = flavorFactory.getCoffeeFlavor("espresso");
    
        // This is comparing the reference value, not the contents of the objects
        if (a == b && b == c)
            System.out.println("I have three references to the same object!");
    }