반응형
ISP(Interface Segregation Principle) - 인터페이스 분리 원칙
ISP는 객체지향의 5대 원칙 중 하나로, 클라이언트는 자신이 사용하지 않는 인터페이스에 의존하지 않아야 한다는 것을 의미합니다. 이것은 인터페이스를 작은 단위로 분리하여 인터페이스 간의 의존성을 낮추는 것을 의미합니다.
ISP의 예시
다음은 ISP의 예시입니다.
interface IAnimal
{
void Eat();
void Sleep();
void Move();
}
class Dog : IAnimal
{
public void Eat() { /* ... */ }
public void Sleep() { /* ... */ }
public void Move() { /* ... */ }
}
class Bird : IAnimal
{
public void Eat() { /* ... */ }
public void Sleep() { /* ... */ }
public void Move() { /* ... */ }
}
위의 예제는 IAnimal 인터페이스와 Dog, Bird 클래스를 보여줍니다. 이 예제에서 IAnimal 인터페이스에는 Eat(), Sleep(), Move() 메소드가 포함되어 있습니다. 그러나 Dog와 Bird 클래스에서는 Move() 메소드를 사용하지 않습니다.
이것은 ISP를 위배하는 예제입니다. 이것은 클라이언트가 자신이 사용하지 않는 인터페이스에 의존해야 한다는 것을 의미합니다. 그러므로, 이 예제에서는 IAnimal 인터페이스를 분리하여 의존성을 낮추는 것이 좋습니다.
다음은 ISP를 지키는 예시입니다.
interface IAnimal
{
void Eat();
void Sleep();
}
interface IMoveable
{
void Move();
}
class Dog : IAnimal, IMoveable
{
public void Eat() { /* ... */ }
public void Sleep() { /* ... */ }
public void Move() { /* ... */ }
}
class Bird : IAnimal, IMoveable
{
public void Eat() { /* ... */ }
public void Sleep() { /* ... */ }
public void Move() { /* ... */ }
}
이 예제에서는 IAnimal 인터페이스와 IMoveable 인터페이스를 사용하여 인터페이스를 분리하였습니다. 그러므로, 클라이언트는 자신이 사용하는 인터페이스에만 의존하게 됩니다.
ISP의 장점
ISP를 지키면 인터페이스 간의 의존성이 낮아지므로 코드의 재사용성과 유지보수성이 개선됩니다.
결론
ISP는 클라이언트가 자신이 사용하지 않는 인터페이스에 의존하지 않아야 한다는 객체지향의 5대 원칙 중 하나입니다. 이것은 인터페이스를 작은 단위로 분리하여 인터페이스 간의 의존성을 낮추는 것을 의미합니다. 이번 글을 통해 ISP에 대해 더욱 자세히 알아보았습니다.
참고자료
- [SOLID Design Principles Explained: Interface Segregation Principle
'C#' 카테고리의 다른 글
C#의 #region 지시어 (0) | 2023.05.08 |
---|---|
객체지향의 5대 원칙 SOLID : Dependency Inversion Principle (0) | 2023.05.01 |
객체지향의 5대 원칙 SOLID : Liskov Substitution Principle (0) | 2023.04.29 |
객체지향의 5대 원칙 SOLID : Open-Closed Principle (0) | 2023.04.28 |
객체지향의 5대 원칙 SOLID : Single Responsibility Principle (0) | 2023.04.27 |