Java中的Flyweight示例

dar*_*sky 6 java flyweight-pattern

我正在尝试用Java创建一个flyweight对象.我在Objective-C中使用了类似的概念(Objective-C中的Singleton类//我相信它们是相同的东西).

我想在网上找到一个教程或一个例子或解释,以了解如何创建一个flyweight对象并使用它,但我在谷歌上搜索,我找不到任何血统.我浏览了10页,他们基本上都是从一个网站抄袭,这个网站只是解释了这个概念.我理解这个概念 - 我需要一些东西来帮助我/教我如何用Java实现它.

任何人都有任何建议/教程?

谢谢!

Bri*_*ach 3

蝇量模式的维基百科条目一个具体的 Java 示例。

编辑以尝试帮助OP理解该模式:

正如我在下面的评论中所指出的,享元模式的要点是您共享某个事物的单个实例,而不是创建新的、相同的对象。

使用 Wiki 示例,CoffeeFlavorFactory只会创建任何给定的单个实例CoffeeFlavor(这是在第一次请求 Flavor 时完成的)。对相同风味的后续请求将返回对原始单个实例的引用。

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!");
}
Run Code Online (Sandbox Code Playgroud)