我做了一个不可变的分数类(我想是的,一切都是最终的)。我读到字符串有这个“池”,一旦“asd”被实例化,所有其他对“asd”的引用都会指向第一个。(如果我理解正确的话)那么我将这个“池”重新创建为一个包含所有创建分数的超类是否有意义。可能有一个静态工厂方法在创建新分数之前首先检查现有分数池?
var a = new Fraction(3,4);
var b = a;
var c = new Fraction(3,2);
System.out.println(a + " " + b + " " + (a == b)); // 3/4 3/4 true
b = a.add(b);
System.out.println(a + " " + b + " " + (a == b)); // 3/4 3/2 false
System.out.println(b + " " + c + " " + (b == c)); // 3/2 3/2 false (should be true but add() returns a new fraction)
这个想法是否值得做,即它会比平均实例化具有相同值的新分数更快吗?