MapleStory Cookie With Halo

☕ JAVA/☕ 개념지식

[JAVA]SOLID란? 객체지향 설계원칙

뉴이 NUEY 2025. 1. 12. 12:51
반응형

 

SOLID
객체지향 설계원칙

 

 

  • SRP Single Responsibility Principle
    단일 책임 원칙

    • 한 클래스는 하나의 책임만 가져야 한다.
    • 클래스와 메서드를 잘 분리해 한 메서드를 고치면 다른 클래스를 고칠 필요가 없어야 한다.

    • 변경이 있을 때 파급 효과가 적으면 단일 책임 원칙을 잘 따른 것.


  • OCP Open/Closed Priciple
    개방-폐쇄 원칙

    • 소프트웨어 요소는 확장에는 열려있으나 변경에는 닫혀있어야 한다.

    • example) 인터페이스와 구현클래스


  • LSP Liskov Substitution Principle
    리스코프 치환 원칙

    • 하위 클래스는 상위클래스의 의도에 맞게 기능을 구현해야 한다.

    • example) 자동차 인터페이스의 엑셀은 앞으로 가라는 기능을 구현해야 한다. 뒤로 가게 구현된다면 LSP원칙을 위반한다.


  • ISP Interface Segregation Principle
    인터페이스 분리 원칙

    • 인터페이스 여러 개가 범용 인터페이스 하나 보다 낫다.

    • example) 자동차 인터페이스 → 운전 인터페이스, 정비 인터페이스로 분리.


  • DIP Denpendency Inversion Principle
    의존관계 역전 원칙

    • 프로그래머는 "추상화에 의존해야지, 구체화에 의존하면 안된다."
      →  쉽게 말해 구현 클래스에 의존하지 말고, 인터페이스에 의존하라는 뜻.

 

🌟 정리
객체 지향의 핵심은 다형성이다.
하지만 다형성만으로는 OCP, DIP를 지킬 수 없다.
→ 설정을 스프링 컨테이너가 하게끔 분리해서 위 원칙을 지킬 수 있다.
이상적으로는 모든 설계에 인터페이스를 부여하면 좋지만, 추상화라는 비용이 발생한다(여러 구현 클래스 중 어느 것을 사용해야 할 지 모두 확인해야 한다.).
→ 실무적으로 생각해보자면... 기능을 확장할 가능성이 없다면 구체 클래스를 직접사용하고, 향후 꼭 필요할 때 리팩터링해서 인터페이스를 도입하는 것도 방법이다.

 


※ 참조 : https://www.inflearn.com/roadmaps/373

반응형