【发布时间】:2016-08-22 08:28:13
【问题描述】:
我想知道,如何将单例模式与接口一起使用?我已经创建了一个界面:
public interface BusinessService {
BusinessService getInstance();
}
我做了这个实现:
public class BusinessServiceImpl implements BusinessService {
private static BusinessServiceImpl instance = null;
private BusinessServiceImpl(){ }
@Override
public BusinessServiceImpl getInstance() {
if (instance == null) {
BusinessServiceImpl.instance = new BusinessServiceImpl();
}
return BusinessServiceImpl.instance;
}
}
如何从我的主类访问 getInstance? 我尝试了类似的东西
private BusinessService service = new BusinessServiceImpl();
(不起作用 - BusinessServiceImpl() 的构造函数是私有的)
但还有什么?你能帮帮我吗?
编辑:我正在使用 Java Spring!我不想使用 Java Springs - 依赖注入!
你好,米拉
【问题讨论】:
-
你从那里得到了
NullPointerException?堆栈跟踪在哪里? -
你应该使用像 Spring 或 Guice 这样的依赖注入工具。
-
如果“BusinessSericeImpl”为单例,则不能调用“new BuisinessServiceImpl()”。你应该做 BuisinessServiceImpl.getInstance();你不能,因为 getInstance 方法不是静态的。您不能在接口中定义静态方法。你确定要单身吗?它看起来更像是工厂模式
-
使您的
getInstance()方法静态化。并尝试获取BusinessService service = BusinessServiceImpl.getInstance() -
getInstance() 方法必须是静态的,因此不能是接口的一部分。否则,你需要构造一个新的实例来获取唯一的实例,这完全没有意义。为什么要首先使用单例反模式?