Qua*_*fan 10 java design-patterns
一个简单的设计问题.
示例代码:
Integer int1 = new Integer(20);
System.out.println(Integer.toBinaryString(int1));
Run Code Online (Sandbox Code Playgroud)
为什么JDK设计不像以下那样?那么,toBinaryString函数会返回所需的结果吗?
System.out.println(int1.toBinaryString());
Run Code Online (Sandbox Code Playgroud)
除了静态函数的广泛可用性之外,这种设计方法的其他原因是什么?他们使用任何特定的设计模式吗?如果是,那么,哪种模式?
San*_*rma 15
这是因为您不能有两个具有相同名称的方法,一个是静态的,一个是实例.再次为同一功能设置两个不同的方法名称会让人感到困惑.
使用静态方法似乎更合乎逻辑,因为在这种情况下,您不必在获取其二进制表示之前将int"包装"到Integer中,并且它同时满足两个目的(二进制字符串for int和for Integer).
您的示例代码创建了一个实例,Integer然后将其解包.没有必要:
int int1 = 20;
String binary = Integer.toBinaryString(int1);
Run Code Online (Sandbox Code Playgroud)
如果它是一个实例方法,你将被迫创建一个Integer单独的实例来转换int为它的二进制表示,这将是令人讨厌的.
换句话说:避免不必要地创建对象.
回到这个方法时,在JDK1.0.2中,没有自动装箱,JVM比现在慢得多.我想,使用这种静态方法可以轻松地将int和Integer转换为二进制字符串,而无需为了将int转换为二进制而创建新的Integer实例.