ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
28.5 最佳实践 Flyweight是拳击比赛中的特用名词,意思是“特轻量级”,指的是51公斤级比赛,用到设计模式中是指我们的类要轻量级,粒度要小,这才是它要表达的意思。粒度小了,带来的问题就是对象太多,那就用共享技术来解决。 享元模式在Java API中也是随处可见,如这样的程序就是一个很好的例子,如代码清单28-17所示。 代码清单28-17 API中的享元模式 public class Test {     public static void main(String[] args) {            String str1 = "和谐";            String str2 = "社会";            String str3 = "和谐社会";            String str4;             str4 = str1 + str2;             System.out.println(str3 == str4);            str4 = (str1 + str2).intern();             System.out.println(str3 == str4);     } } 看看Java的帮助文件中String类的intern方法。如果是String的对象池中有该类型的值,则直接返回对象池中的对象,那当然相等了。 需要说明一下的是,虽然可以使用享元模式可以实现对象池,但是这两者还是有比较大的差异,对象池着重在对象的复用上,池中的每个对象是可替换的,从同一个池中获得A对象和B对象对客户端来说是完全相同的,它主要解决复用,而享元模式在主要解决的对象的共享问题,如何建立多个可共享的细粒度对象则是其关注的重点。