我有一種情況,我需要調用第三方服務來獲取一些信息。對於不同的客戶,這些服務可能會不同。我的界面中有一個驗證功能,如下所示。接口實現(接口分離原理)
interface IServiceProvider {
bool Authenticate(string username, string password);
}
class ABCServiceProvider : IserviceProvider
{
bool Authenticate(string username, string password) { // implementation}
}
class EFGServiceProvider : IserviceProvider
{
bool Authenticate(string username, string password) { // implementation}
}
等等......現在我已經跨越,需要進行身份驗證一些附加信息(的agentId)服務供應商(比方說XYZServiceProvider)來了。這樣的事情...
class XYZServiceProvider
{
bool Authenticate(string username, string password, int agentid) { // implementation}
}
現在,如果我提供了另一種身份驗證功能,在我的接口3個參數,並拋出未實現異常在所有類別中,除了XYZServiceProvider,豈不是違反接口隔離原則?我在代碼的其他部分也有類似的情況。任何人都可以告訴我最新的方法來實現這種類型的scenrio?我會非常感激。
一致地定義一個新的接口,如IAgentServiceProvider。使XYZserviceProvider實現IAgentServiceProvider。現在應用Adapter模式,其中XYZServiceProvider類是Adaptee。 Adapter類將實現IServiceProvider幷包含IAgentServiceProvider引用 – aknon