我正在尝试使用 Flyweight 设计模式减少 Book 对象的重复,但在某些时候卡住了。
例如,假设有一个 book 类,其中包含一些变量,例如 bookName、published_date 和 Langauge,并且有人创建了一个 book 实例:
bookName: ABC // published_date: 17-05-2020 // Langauge: English.
我想要做的是,当他克隆上面的同一本书实例时,我想减少重复。
但是,当我搜索享元模式时,它们都将 String 或 Integer 作为内在值/键。
例子:
class CoffeeFlavorFactory {
private Map<String, CoffeeFlavor> flavors = new HashMap<String, CoffeeFlavor>();
CoffeeFlavor getCoffeeFlavor(String flavorName) {
CoffeeFlavor flavor = flavors.get(flavorName);
if (flavor == null) {
flavor = new CoffeeFlavor(flavorName);
flavors.put(flavorName, flavor);
}
return flavor;
}
上面的代码将 String flavorName 作为内在值。
我想问的是,有没有办法将 Book 对象作为内在价值并使用享元模式?
提前致谢!