我有一个管理用户状态的单例类,假设它叫做UserStateManager。有一些我想调用的方法,如登录和注销。但是,似乎我总是要做这样的事情:
UserStateManager.getInstance().login(user);
UserStateManager.getInstance().logout();
但我想做一些像这样的事情:
UserStateManager.login(user);
UserStateManager.logout();
并且有一个静态登录和注销方法来处理获取单例实例。但与此同时,我希望实例方法仍然可用,以防我使用单例执行多项操作:
UserStateManager usm = UserStateManager.getInstance();
usm.login(user);
usm.setLocation(location);
usm.setVerified(true);
但是,Java不允许静态和实例方法以相同的签名存在。它似乎允许你从实例调用静态方法,但是即使我从一个实例调用方法,我也必须调用getInstance(),这看起来很傻,但也许这是最好的选择?人们在这种情况下做了什么?只是忍受它并在所有地方调用getInstance()?
答案 0 :(得分:0)
我知道这篇文章很老,但是拥有额外的成员功能呢?
static void login() { getInstance().login() }
可以用作:
UserStateManager::login()
但是如果有很多需要包装的功能,那将是一团糟...