[JAVA] SOLID

SELOG·2023년 5월 31일
0

JAVA

목록 보기
1/4

좋은 객체 지향 설계의 5가지 원칙

> 클린코드로 유명한 '로버트 마틴'이 좋은 객체 지향 설계의 5가지 원칙을 정리

> 소프트웨어의 설계와 구조를 유지보수 가능하고 확장과 재사용이 가능하게 만들기 위해 사용

  • SRP : 단일 책임 원칙 (Single Responsibility Principle)
    • 클래스나 모듈은 한 가지 기능 또는 책임을 가져야 하며, 이를 초과하는 다른 책임을 포함해서는 안됨
    • 클래스나 모듈의 응집도(cohesion)를 높이고, 변경 시점을 최소화하여 코드의 이해와 유지보수를 용이하게 만듦

      Ex) UI 변경, 객체의 생성과 사용을 분리

  • OCP : 개방-폐쇄 원칙 (Open-Closed Principle)
    • 소프트웨어 개체(클래스, 모듈, 함수 등)는 확장에는 열려 있어야 하지만 변경에는 닫혀 있어야 한다는 것을 의미
    • 새로운 기능이 추가되거나 변경이 필요한 경우에는 기존 코드를 수정하지 않고도 확장할 수 있어야 함
    • 코드의 재사용성을 높이고, 유연성과 유지보수성을 향상시킴
  • LSP : 리스코프 치환 원칙 (Liskov Substitution Principle)
    • 상속 관계에서는 자식 클래스가 부모 클래스의 기능을 완전히 대체할 수 있어야 함
    • 코드의 재사용성과 유연성을 높일 수 있음

      Ex) 자동차 인터페이스의 엑셀은 앞으로 가라는 기능, 뒤로 가게 구현하면 LSP 위반; 느리더라도 앞으로 가야함

  • ISP : 인터페이스 분리 원칙 (Interface Segregation Principle)
    • 클라이언트는 자신이 필요로 하는 기능만 포함하는 작은 인터페이스를 가져야 함
    • 클라이언트와 구현 사이의 결합도를 줄이고, 인터페이스의 응집도를 높일 수 있음
  • DIP : 의존관계 역전 원칙 (Dependency Inversion Principle)
    • 의존성은 인터페이스나 추상 클래스와 같은 추상화된 개념에 의존해야 함 ( 구체화에 의존하면 안된다! )
    • 코드 간의 결합도를 줄이고, 유지보수성과 테스트 용이성을 향상시킬 수 있음

정리

  • 객체 지향의 핵심은 다형성
  • 다형성 만으로는 쉽게 부품을 갈아 끼우듯이 개발할 수 없다.
  • 다형성 만으로는 구현 객체를 변경할 때 클라이언트 코드도 함께 변경된다.
  • 다형성 만으로는 OCP(개방-폐쇄), DIP(의존관계 역전)를 지킬 수 없다.
profile
금융 IT 전문가가 될거야

0개의 댓글