[C#] SOLID 원칙 (4 : I/ISP)

Learning 

When: 1학년 8월 8일

 

How:

솔리드 원칙에 대해 써야겠다고 생각은 해왔었지만 내용이 좀 많아서 어떻게 쓸지 고민하다가 람다식처럼 나누어 쓰면 될 것 같아 이렇게 S,O,L,I,D로 나누어 쓰게 되었습니다.

 

Understanding:

I : 인터페이스 분리 원칙 (Interface Segregation Principle, LSP)

  • 정의 : 인터페이스 분리 원칙은 앞에서 설명한 리스코프 치환 원칙과 연결되는 원칙입니다.
    인터페이스를 작성할 때 많은 메서드를 한 인터페이스 내에 전부 구현하지 않고 분류하여
    다른 인터페이스로 분산시켜야 한다는 원칙입니다. 이유가 리스코프 치환 원칙과 유사한데,
    예시도 똑같이 해보겠습니다. 새 인터페이스를 만들어서 조류는
    이 인터페이스를 상속하게 만들려고 합니다. 그리고 이 인터페이스에는 Fly()라는
    나는 메서드가 있는데, 펭귄 클래스를 만들어서 이 인터페이스를 상속하다 보니 나는 메서드를
    구현해야 하지만 펭귄은 날지 못해 예외를 던지거나 아무것도 하지 못하게 됩니다.
    이것은 SOLID 원칙 중 리스코프 치환 원칙에 위배되는 코드이고, 인터페이스에 많은
    메서드가 있으면 코드도 길어지고 상속 가능한 클래스의 수도 적어져 재사용성도 더러워질 뿐더러,
    코드도 더러워 집니다. 그래서 이런 상황에서는 IFlyer 과 같은 인터페이스를 만들어
    따로 상속시키는 방법이 있습니다. 

Result: 이번 내용은 리스코프 치환 원칙을 위한 원칙 같은 느낌이라 어렵지 않은데, 공부하며 생각해보니 실제로 코드를 짤 때는 인터페이스를 잘 사용하지 않았던 것 같아 반성하게 되었습니다. 지금은 구현을 중심으로 코드를 짜고 있지만 시간에 여유가 있을 때는 재사용성이나 가독성 등을 신경쓰며 코드를 짜야겠다는 생각이 들었습니다.

'C#' 카테고리의 다른 글

[C#] 2차원 배열  (3) 2025.08.10
[C#] SOLID 원칙 (5 : D/DIP)  (2) 2025.08.10
[C#] SOLID 원칙 (3 : L/LSP)  (4) 2025.08.07
[C#] SOLID 원칙 (2 : O/OCP)  (3) 2025.08.06
[C#] SOLID 원칙 (1 : S/SRP)  (3) 2025.08.05