“有则取出返回,没有则创建添加并返回。”
构造接口和类
首先创建水果接口:
|
|
然后创建水果类:
|
|
最后这行打印this的目的是为了在输出时,显示对象的HashCode,进而判断打印的是哪一个对象;
构造工厂
构造工厂的过程,揭示了享元模式的基本原理,首先,当我们需要在一个map中取一个value的时候,判断它是否为空,如果不为空,那么就返回,如果为空,那么就创建相应的对象,添加到map中,并返回,在某些场景能很好的节约开销。
代码如下:
|
|
测试用例
|
|
输出为:1234Red com.cg.OrangeFlyweight@3cd1a2f1Red com.cg.OrangeFlyweight@3cd1a2f1Process finished with exit code 0
原本的map为空,调用getFruitflyweight方法后,会创建水果对象,当再次调用getFruitflyweight时,会反回之前存在的对象。