inflearn
김영한
스프링 핵심 원리 기본편 섹션 0~4강
학습목표
순수 자바로 간단한 회원 주문 서비스를 코딩하고 스프링 컨테이너와 스프링 빈(Bean) 파트를 스프링으로 전환
-객체 지향이란?
객체를 영화로 비유해 보겠다.
영화에서 남자 주인공 역할과 여자 주인공 역할이 있다.
그리고 감독은 각 역할을 맡을 배우를 찾는다.
감독이 남자 배우 A, B, C와 여자 배우 1, 2, 3 중 남자 주인공 역할에 남자 배우 A, 여자 주인공 역할에 여자 배우 2를 캐스팅했다고 하자.
여기서 A와 2는 각각 객체이다.
역할과 객체가 분리되어 있다는 점을 기억하라.
만약, 두 배우 중 한 명이 개인 사정으로 인해 하차한다고 해도 다른 배우로 교체하면 되기 때문에 영화 촬영에는 문제가 없다.
다시 이 비유를 객체 지향 프로그래밍에 대입하자.
객체는 영화, 감독은 프로그래머, 남자 주인공 역할과 여자 주인공 역할은 인터페이스, 각 역할을 맡을 배우는 구현 객체에 해당한다.
인터페이스와 객체가 분리되어 있으면 어떻게 될까?
유연하고 변경이 용이하며, 확장이 가능한 설계를 할 수 있다.
인턴 기간 동안 스스로의 코드를 유지보수하며 몸소 느꼈는데 이러한 설계는 선택이 아닌 필수이다.
-좋은 객체 지향 설계의 5가지 원칙
• SRP: 단일 책임 원칙
• OCP: 개방-폐쇄 원칙
• LSP: 리스코프 치환 원칙
• ISP: 인터페이스 분리 원칙
• DIP: 의존관계 역전 원칙
이렇게 쓰면 무슨 소린지 하나도 모르겠다.
그래서 이해한대로 한번 바꿔 말해보겠다.
• SRP-단일 책임 원칙
배우가 역할 지정하는거 안된다.
배우는 맡은 역할만!
• OCP-개방-폐쇄 원칙
애매하다. 배우가 직접 역할을 맡아서는 안된다 정도로 이해했다.
• LSP-리스코프 치환 원칙
배우는 연기만 한다. 배우가 역으로 각본을 쓰면 LSP 위배.
• ISP-인터페이스 분리 원칙
'연기 라는 인터페이스' => 분장사, 배우, 코디로 분리.
이렇게 해야 역할이(인터페이스) 명확하고 대체 가능성을 높일 수 있다.
• DIP-의존관계 역전 원칙
배우에 의존하지 말고 역할에 의존해라.
이렇게 쓰니까 좀 알거같다. 앞으로도 다시 보러와야지..
이 외에는 강의자료에 있는 코드라 저작권을 위해 블로그에 작성하지 않겠다.