객체지향의 5대 원칙 SOLID : Interface Segregation Principle

2023. 4. 30. 10:47·C#
반응형

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
'C#' 카테고리의 다른 글
  • C#의 #region 지시어
  • 객체지향의 5대 원칙 SOLID : Dependency Inversion Principle
  • 객체지향의 5대 원칙 SOLID : Liskov Substitution Principle
  • 객체지향의 5대 원칙 SOLID : Open-Closed Principle
코샵
코샵
나의 코딩 일기장
    반응형
  • 코샵
    끄적끄적 코딩 공방
    코샵
  • 전체
    오늘
    어제
    • 분류 전체보기 (515) N
      • 상품 추천 (33)
      • MongoDB (4)
      • 하드웨어 (3) N
      • 일기장 (4)
      • Unity (138)
        • Tip (41)
        • Project (1)
        • Design Pattern (8)
        • Firebase (6)
        • Asset (2)
      • 파이썬 (127)
        • Basic (40)
        • OpenCV (8)
        • Pandas (15)
        • PyQT (3)
        • SBC(Single Board Computer) (1)
        • 크롤링 (14)
        • Fast API (29)
        • Package (6)
      • Linux (4)
      • C# (97)
        • Algorithm (11)
        • Window (7)
      • TypeScript (48)
        • CSS (10)
      • Git (11)
      • SQL (5)
      • Flutter (10)
        • Tip (1)
      • System (1)
      • BaekJoon (6)
      • Portfolio (2)
      • MacOS (1)
      • 유틸리티 (1)
      • 서비스 (6)
      • 자동화 (3)
      • Hobby (10)
        • 물생활 (10)
        • 식집사 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 다비즈
  • 공지사항

  • 인기 글

  • 태그

    카페24리뷰이관
    unity
    programming101
    카페24리뷰
    스크립트 실행
    programmerlife
    ipcamera
    파이썬
    긴유통기한우유
    쇼핑몰리뷰
    리뷰이관
    리뷰관리
    Python
    유니티
    믈레코비타멸균우유
    라떼우유
    rtsp
    devlife
    스마트스토어리뷰
    상품 리뷰 크롤링
    learntocode
    셀레니움
    appdevelopment
    codingcommunity
    cv2
    리스트
    스크립트 실행 순서
    codingtips
    C#
    list
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코샵
객체지향의 5대 원칙 SOLID : Interface Segregation Principle
상단으로

티스토리툴바