【发布时间】:2014-01-15 16:03:53
【问题描述】:
在我的应用程序中,应该有两种登录方式:通过用户/密码手动登录或自动登录,其中凭据从操作系统检索(连接到活动目录服务器)。
为了灵活,我新建了一个界面:
interface SignOnProcessor {
boolean verifyLogin(SignOnCredentials _credentials)
}
其中SignOnCredentials 是一个没有任何方法的接口。
之后,我创建了SignOnProcessor 的两个实现:PasswordSignOnProcessor 和SingleSignOnProcessor。两者都在 verifyLogin() 方法中实现了不同的逻辑。
PasswordSignOnProcessor需要用户名和密码,所以PasswordSignOnCredentials是这样实现的:
class PasswordSignOnCredentials implements SignOnCredentials {
String getUserName();
String getPassword();
}
另一方面,SingleSignOnProcessor 不需要任何凭据。它只会向操作系统询问必要的信息。因此,我目前正在传递SignOnCredentials 的空实现:
class SingleSignOnCredentials implements SignOnCredentials {
// Nothing here, credentials are retrieved from OS
}
SingleSignOnCredentials 在verifyLogin() 方法中没有做任何事情。
我觉得一定有更好的方法。我不需要创建对象并将其传递给verifyLogin(),然后不使用它。
我能想到的另一个解决方案是创建一个不带任何参数的接口方法verifyLogin()。这也感觉不对。
在这种情况下,首选的解决方案是什么?应该有一些不错的,干净的方式来做到这一点,但目前我被卡住了。任何帮助表示赞赏!
【问题讨论】: