이 내용은 '스프링 입문을 위한 자바 객체지향의 원리와 이해의 5장을 기반으로 정리한 내용입니다.
http://gmkt.kr/goNxOm
객체지향 프로그래밍의 5원칙
단일 책임 원칙: 하나의 객체는 하나의 역할만 책임져야 한다.
즉, 사람 객체가 직원, 학생, 아들, 아버지 역할을 동시에 맡으면 안된다.
원칙을 위반하는지 되돌아 볼 필요가 있는 상황: 로직에 if가 점점 늘어난다.
객체의 상태에 따라 다른 행위를 하도록 하기 위한 분기처리가 많아진다. -> Code Smell
개방 폐쇄 원칙: 확장에 대해 개방, 변경에 대해 폐쇄
==> (자신의 확장은 열려있고, 주변의 변화에는 닫혀있다(==영향을 받지 않는다))
JDBC 인터페이스 기반의 App은 사용하는 인터페이스 구현체의 변화(==DB의 변화)에는 영향을 받지 않는다
편의점 직원(주변)의 변화가 고객의 구매
행위에 영향을 주지 않음
리스코프 치환 원칙
=> 하위 클래스의 객체는 상위 클래스의 객체 역할을 수행하는데 문제가 없어야 한다. (== 대체할 수 있어야 한다.)
아래의 원칙을 준수하는 프로그램
==> 상속은 조직도/계층도가 아니라 분류도이다!
인터페이스 분리 원칙
-> 객체가 할수 있는 일을 왕창 만들고, 사용할 때는 이를 Interface로 가려서(==분리해서) 사용
객체의 역할/책임을 분리하는 방법 중 하나: SRP와 ISP 중 하나를 선택해 사용할 수 있음
일반적으로는 SRP를 적용하는 것이 좋음 -> 인터페이스 최소주의 원칙
의존성 역전 원칙