일부 정보를 가져 오기 위해 타사 서비스를 호출해야하는 경우가 있습니다. 이러한 서비스는 고객마다 다를 수 있습니다. 다음과 같이 인터페이스에 인증 기능이 있습니다. 인터페이스 구현 (인터페이스 분리 원칙)
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를 구현하도록합니다. 이제 XYZServiceProvider 클래스가 Adaptee 인 어댑터 패턴을 적용합니다. 어댑터 클래스는 IServiceProvider를 구현하고 IAgentServiceProvider 참조를 포함합니다. – aknon