클라이언트가 사용하지 않는 인터페이스에 강제로 의존해서는 안 됩니다.
인터페이스 분리 원칙은 클라이언트가 사용하지 않는 인터페이스를 강제로 구현해서는 안 된다고 명시하고 있습니다.
하나의 팻 인터페이스 대신 여러 개의 작은 인터페이스가 메서드 그룹을 기반으로 선호되며, 각 인터페이스는 하나의 하위 모듈을 제공합니다.
인터페이스 분리 전
예시
public interface IProduct {
int ID { get; set; }
double Weight { get; set; }
int Stock { get; set; }
int Inseam { get; set; }
int WaistSize { get; set; }
}
public class Jeans : IProduct {
public int ID { get; set; }
public double Weight { get; set; }
public int Stock { get; set; }
public int Inseam { get; set; }
public int WaistSize { get; set; }
}
public class BaseballCap : IProduct {
public int ID { get; set; }
public double Weight { get; set; }
public int Stock { get; set; }
public int Inseam { get; set; }
public int WaistSize { get; set; }
public int HatSize { get; set; }
} 인터페이스 분리 후
예시
public interface IProduct {
int ID { get; set; }
double Weight { get; set; }
int Stock { get; set; }
}
public interface IPants {
int Inseam { get; set; }
int WaistSize { get; set; }
}
public interface IHat {
int HatSize { get; set; }
}
public class Jeans : IProduct, IPants {
public int ID { get; set; }
public double Weight { get; set; }
public int Stock { get; set; }
public int Inseam { get; set; }
public int WaistSize { get; set; }
}
public class BaseballCap : IProduct, IHat {
public int ID { get; set; }
public double Weight { get; set; }
public int Stock { get; set; }
public int HatSize { get; set; }
}