在我的应用程序中,应该有两种登录方式:通过用户/密码手动或自动从操作系统(连接到活动目录服务器)检索凭据。使用可选凭据来定义用户验证界面
为了是柔性的,我已创建一个新的接口:
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
}
没有在verifyLogin()
方法与SingleSignOnCredentials
完成。
我有这样的感觉,必须有更好的方法。我不应该创建并传递一个对象到verifyLogin()
然后不使用它。 我能想到的另一个解决方案是创建一个没有任何参数的接口方法verifyLogin()
。这也感觉不对。
这种情况下的首选解决方案是什么?应该有一些很好的,干净的方式来做到这一点,但目前我被卡住了。任何帮助表示赞赏!