좋은 oop를 위한 5대 설계 원칙 - SOLID

Jiwon Park·2023년 3월 17일
0
  1. SRP(single responsibility principle) : 단일 책임 원칙
    코드 변경 시 파급 효과가 적어야 한다.
    하나의 클래스는 하나의 책임만 진다.
    관심사(기능) 분리
  2. OCP(open/closed principle) : 개방-폐쇄 원칙
    확장에는 열려있으나 변경에는 닫혀 있어야 한다.
    소프트웨어 요소를 새롭게 확장해도 사용 영역의 변경은 닫혀 있다.
    인터페이스의 구현체를 만들어서 새로운 기능들을 확장해 나간다.
    기존의 코드를 변경하지 않으면서 기능을 추가할 수 있도록 설계한다.
  3. LSP(liskov substitution principle) : 리스코프 치환 원칙
    단순 컴파일 성공이아닌 인터페이스의 기능적 규약을 맞춰야 한다.
  4. ISP(interface segreation principle) : 인터페이스 분리 원칙
    범용 인터페이스를 기능별로 분리해 인터페이스가 명확해진다. 대체 가능성이 높아진다.
  5. DIP(dependency inversion principle) : 의존관계 역전 원칙
    구체화가 아닌 추상화에 의존한다. -> 구현클래스가 아닌 인터페이스에 의존한다.
    역할과 구현을 분리 시 클라이언트는 역할만 알면 된다.

다형성, DI, 스프링 컨테이너를 이용하여 클라이언트 코드 변경 없이 기능 확장이 가능하다. (OCP와 DIP원칙을 따를 수 있게 된다.)

*인터페이스와 구현체로 역할과 구현을 분리하여 유연하게 변경할 수 있도록 만드는 것이 좋은 객체 지향 설계다. (인터페이스만 봤을 때는 어떤 구현체와 매핑되는지 직관적으로 판단하기 어렵기 때문에 기능을 확장할 가능성이 없다면, 구현체를 직접 사용하는것이 좋을 수 있다. 상황에 따라 잘 판단해서 설계한다.)


Spring MVC

dispatcherServlet : 서블릿의 공통처리가 가능한 부분을 처리해준다.

요청 -> DispatcherServlet(입력) 에서 controller(처리)로 model전달 -> controller에서 model값 설정 -> DispatcherServlet이 view(출력)에 결과 전달 -> 클라이언트에 응답

profile
안녕하세요

0개의 댓글