实现单身时:
class MyConnection {
private static MyConnection connection = new MyConnection();
private MyConnection() {
}
public static MyConnection getConnection() {
return connection;
}
}
Run Code Online (Sandbox Code Playgroud)
1)为什么我们给予connection静态?
这只是因为它getConnection()是静态的,我们不能在静态上下文中引用非静态或者还有其他原因吗?
2)是否有必要宣布connection为最终?
1)为什么我们给予
connection静态?
如果它是非静态的,你需要有一个实例MyConnection来获取connection参考,这样做会破坏目的.:)
这只是因为它
getConnection()是静态的,我们不能在静态上下文中引用非静态或者还有其他原因吗?
是.(因为getConnection()需要是静态的,connection需要是静态的.)
2)是否有必要将连接声明为最终?
不,但这是一种很好的做法,因为一旦初始化,就不应该改变.
但是,更好的做法是enum改用.
enum MyConnection {
INSTANCE;
// your methods...
}
Run Code Online (Sandbox Code Playgroud)
并通过它访问它MyConnection.INSTANCE.
经验法则:如果一个类具有预定义数量的实例,请使用enum.在这种情况下,实例的数量是一个.