SOLID 이란?
클린 코딩 디자인중 하나인 SOLID 원칙에 대해서 천천히 알아보자.
- S: 단일 책임 원칙
- O: 개방/폐쇄의 원칙
- L: 리스코프 치환 원칙
- I: 인터페이스 분리 법칙 👈 현위치
- D: 의존성 역전 원칙 👈 현위치
인터페이스 분리 원칙
* 용어 정리
인터페이스 : 객체가 노출하는 매서드의 집합이다. 즉 객체가 수신하거나 해석할 수 있는 모든 메시지가 인터페이스를
구성하며 이것들은 다른 클라이언트에서 호출 할 수 있는 요청들이다.
인터페이스 분리 원칙(Interface Segregation Principle)은 다중 메서드를 가진 인터페이스가 있다면 더 적은 수의 메서드를 가진 여러 개의 메서드로 분할하는 것이 좋다는 것이다.
가능한 작은 단위로 인터페이스를 분리하면 각 클래스가 명확한 동작과 책임을 갖게 되기 때문에 응집력이 높아진다.
위와 같은 다이어그램이 있다고 하자.
class Printer:
def print_text_document(self):
print("text document")
def print_image_document(self):
print("image document")
위 클래스를 사용하는 경우 print_image_document메서드를 필요로 하지 않고 print_text_document만 필요한 경우 어떨까? 사용하는 사람 입장은 불필요하게 print_image_document 함수가 구현되어 있다.
사용자는 EventParser 인터페이스를 상속한다는 이유로 print_image_document, print_text_document() 메소드를 제공 할것이다. 이것은 결합력을 높여 유연성이 떨어뜨리며 클라이언트가 필요하지도 않은 메서드를 구현하도록 한다.
개선하기.
class TextPrinter(Printer):
def print(self):
print("text document")
class ImagePrinter(Printer):
def print(self):
print("image document")
위와 같은 예제는 약간 과정된 예제이지만 이해를 위해 참고하기 바란다.
'Python' 카테고리의 다른 글
[Python] Overloading 개념 (0) | 2023.02.12 |
---|---|
[Python] SOLID 의존성 역전 원칙(DIP) (0) | 2023.02.09 |
[Python] SOLID_리스코프 치환 원칙(LSP) (0) | 2023.02.08 |
[Python] SOLID_개방/폐쇄 원칙(OCP) (0) | 2023.02.07 |
[Python] SOLID_단일 책임 원칙(SRP) (0) | 2023.02.06 |