Spring

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

dev-rootable 2023. 5. 1. 15:53
  1. SRP : 단일 책임 원칙(Single Responsibility Principle)
    • 하나의 클래스는 하나의 책임만 가져야 한다.
    • 이것은 변경이 있을 때 파급 효과를 줄이기 위함
  2. OCP : 개방 폐쇄 원칙(Open-Close Principle)
    • 소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야 한다.
    • 역할과 구현의 분리를 의미하고 다형성의 개념
    • 하지만 다형성만으로는 OCP 를 지킬 수 없다.
  3. LSP : 리스코프 치환 원칙(Liskov Substitution Principle)
    • 프로그램의 객체는 프로그램의 정확성을 깨지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다.
    • 이것은 객체 지향의 상속 개념
  4. ISP : 인터페이스 분리 원칙(Interface Segregation Principle)
    • 특정 Client를 위한 Interface 여러 개가 하나의 범용 Interface보다 낫다.
    • 이는 인터페이스의 역할이 명확해지고, 대체 가능성이 높아져 객체 지향 프로그래밍에 더욱 적합
  5. DIP : 의존 관계 역전 원칙(Dependency Inversion Principle)
    • 프로그래머는 역할(추상화)에 의존해야지, 구체화에 의존하면 안된다.
    • 이것이 의존성 주입(DI)의 원리
    • 즉, 구현 클래스에 의존하지 말고 인터페이스(역할)에 의존하라는 의미
    • 이를 통해 클래스 의존 관계를 분리하고 변경이 있어도 유연하게 변경이 가능
    • 다형성만으로는 DIP 를 지킬 수 없다.

 

📌 다형성만으로는 OCP, DIP 원칙을 지킬 수 없다.

 

다형성을 활용하고 있더라도 구현 객체를 변경해야 하면 클라이언트 코드도 함께 변경해야 한다.

 

결국 객체를 생성하고, 그것을 필요한 곳에 주입해 주는 별도의 설정자가 필요하다. 스프링은 DI, IoC 등의 기술로 이를 지원한다.

 

Reference:

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8/dashboard

 

스프링 핵심 원리 - 기본편 - 인프런 | 강의

스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다., - 강의 소개 | 인프런

www.inflearn.com