我有以下课程:
public class NinjaImpl implements Ninja{
private NinjaImple () {}
public static Ninja getInstance() {return Singleton.instance;}
private static class Singleton
{
private static final Ninja instance = new NinjaImpl();
}
// Implementation
}
我和一位同事进行了设计讨论。内部类是否应该包含NinjaImpl类型或ninja类型的变量。 getInstance()
应该以同样的方式返回Ninja或NinjaImpl吗?
答案 0 :(得分:2)
通常getInstance()
应该返回接口,因为它允许您更改实现类而不会影响接口的用户。
但是,因为在你的情况下getInstance()
是实现类的一个方法,getInstance()
的用户已经依赖于实现类而不管它返回的类型,所以它不是真的很重要,我不确定在这种情况下完全定义Ninja
接口是否有用。
如果getInstance()
是某个工厂类的方法(让我们称之为NinjaFactory
),返回接口会更有意义,这可能会返回Ninja
接口的任何实现它选择返回。