[Spring]객체지향 설계 원칙의 적용

지수·2022년 5월 10일
0

Spring

목록 보기
1/1

객체지향 설계원칙(SOLID)

  1. 단일 책임원칙(Single Responsibility Principle)
  2. 개방-폐쇄 원칙(Open/Closed Principle)
  3. 리스코프 치환 원칙(Liskov Subsititution Principle)
  4. 인터페이스 분리 원칙(Interface Segregation principle)
  5. 의존관계 역전 원칙(Dependency Inversion Principle)

DIP 의존 관계 역전 원칙

  • 기존의 감자였던 내가 작성했던 프로그램은 실행하는 클라이언트 코드에서 구현 객체를 생성하고 제어했다.
    MemberApp class
    MemberService memberService = new MemberServiceImpl(null);
     OrderService orderService = new OrderServiceImpl(null,null);
  • 나중에는 AppConfig라는 '관리자 클래스'를 만들고 이 관리자 클래스에서 구현체 생성과 의존관계를 제어했다. 따라서 이제 실행 코드에서는 메인 코드에서 구현체가 무엇인지 알 필요가 없어지고 자신의 실행만 맡아서 하면 된다.(SRP)
    AppCongfig.class
    public MemberService memberService(){
          return new MemberServiceImpl(
                  memberRepository()
          );
      }
    MemberApp.class
    AppConfig appConfig = new AppConfig();
    MemberService memberService = appConfig.memberService();
    OrderService orderService = appConfig.orderService(); 
  • 이제는 프로그램 내부에서 하던 제어가 외부 관리자 클래스로 넘어갔기 때문에 이러한 현상을 제어의 역전 (Inversion of Control) 이라고 한다.

OCP 개방-페쇄 원칙

확장에는 열려있고 변경에는 닫혀 있어야 한다.
  • 위의 방법대로 AppConfig를 사용하여 실행 영역과 구성 영역으로 나누게 되면 기능 확장 시, 구성 영역만 변경 (구현체만 갈아끼움,의존 관계 수정 등) 함으로써 실행 코드는 건드리지 않고 프로그램 기능 확장이 가능해진다.
profile
코딩하는 대학생

0개의 댓글