我经常设置打算供其他程序员使用的单例类,我发现我不确定是否有一种首选方法来设置对这些类中方法的访问。我认为这两种方式是:
public class MyClass {
private static MyClass instance;
public static void DoStuff( ) {
instance.DoStuffInstance( );
}
private void DoStuffInstance( ) {
// Stuff happens here...
}
}
其用法为:MyClass.DoStuff( );
或类似的东西:
public class MyClass {
public static MyClass instance;
public void DoStuff( ) {
// Stuff happens here...
}
}
其用法为:MyClass.instance.DoStuff( );
就个人而言,我倾向于选择第一种选择。我发现,对于经验不足的程序员来说,到处都有MyClass.instance
对于记忆来说既丑陋又不直观。
有没有什么好理由更喜欢其中一种?意见很好。只是好奇别人的想法。
答案 0 :(得分:0)
我从未见过以这种方式实施的Singleton。典型设置可能是这样的:
public class MyClass {
private static final MyClass instance = null;
// Private to ensure that no other instances can be allocated.
private MyClass() {}
// Not thread safe!
public static MyClass getInstance() {
if( instance == null ) {
instance = new MyClass();
}
return instance;
}
public void DoStuff( ) {
// Stuff happens here...
}
}
这样所有的调用都类似于instance.DoStuff();
,你只需要为每个“操作”定义一个方法,而不是需要一个静态方法,然后是第一个方法的实际“实例”方法使用
此外,您设置它的方式,看起来您可以在实际初始化实例之前调用这些静态方法,这是一个问题。