设计模式 --面试高频之享元模式 (2)

只能在某个字符串常量第一次被用到的时候,存储到常量池中,当之后再用到的时候,直接引用常量池中已经存在的即可,就不需要再重新创建了

实际运用

我们想想,什么情况我们应该使用享元模式。

我总结了一下:

首先这个对象在很多地方都得使用,否则就是过度设计。

其次这个对象是不可变的,可以让多个线程同时使用。

我举一个具体的例子。

比如我们开发一个麻将游戏。没一局游戏是不是要new一个麻将桌,new一副麻将。假如同时在线100w人,那我们就new了25w个麻将桌和25w副麻。

我们仔细想想能不能用享元模式来优化,首先麻将桌应该是不能优化的,因为他得记录我们每一局游戏得状态,桌上麻将的情况,等等信息。但是麻将我们却可以缓存一副,让他不可变。所有人共用这一副缓存的麻将。

总结

享元模式其实开发中我们用的不是特别多,但是当需要时,却非常的有效。包括面试中关于String,基本类型的包装类关于享元模式的运用。当面试管再抛出这个问题,如果你能回答清楚并且提出其设计模式是享元模式,我相信一定会让面试官眼前一亮。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wspdyw.html