2021. 8. 9. 21:20ㆍCSE/JAVA
1. ISP - 인터페이스 분리 원칙
=> 다음과 같이 인터페이스로 역할에 따라 인터페이스로 나누는 것
- SRP와 ISP는 같은 문제에 대한 두 가지 다른 해결책이다.
=> 하지만 특별한 경우가 아니라면 단일 책임 원칙을 적용하는 것이 더 좋은 해결책이다.
- 인터페이스 최소주의 원칙 : 인터페이스를 통해 메서드를 외부에 제공할 때는 최소한의 메서드만 제공하라는 것
=> 상속의 혜택을 제대로 누리기 위해, 상위 클래스는 풍성할수록 좋고, 인터페이스는 작을수록 좋다.
2. DIP - 의존 역전 원칙
- 위와 같이 자동차와 스노우타이어 사이에 의존관계가 있다고 하자.
=> 하지만 자동차의 수명이 스노우타이어의 수명보다 길고, 이 경우, 자동차의 타이어를 일반 타이어로 교체할 때, 문제가 생긴다.
=> 따라서 다음과 같이 자동차가 타이어 인터페이스에만 의존하게 함으로써 타이어 변경에 영향을 받지 않도록 할 수 있다.
- 원래는 스노우타이어가 그 무엇에도 의존하지 않는 클래스였는데, 타이어 인터페이스에 의존하게 됐다
=> 의존 방향의 역전
- 상위 클래스일수록, 인터페이스일수록, 추상클래스일수록 변하지 않을 가능성이 높다
- 의존 역전 원칙 : 자신보다 변하기 쉬운 것에 의존하던 것을 추상화된 인터페이스나 상위 클래스를 두어, 변하기 쉬운 것의 변화에 영향받지 않게 하는 것
3. SoC
- SoC (Separation Of Concerns) : 관심사의 분리, 관심이 같은 것끼리는 하나의 객체 안으로 또는 친한 객체로 모으고, 관심이 다른 것은 가능한 한 따로 떨어져 서로 영향을 주지 않도록 분리하라는 것
- SoC를 적용하면 자연스럽게 SOLID에 도달하게 된다.
- SOLID 원칙을 적용하면 소스 파일의 개수가 많아지는 경향이 있다.
=> 하지만 논리를 더욱 잘 분할하고, 잘 표현하기에 이해하기 쉽고, 개발하기 쉬우며, 유지와 관리, 보수하기 쉬운 소스가 만들어진다.
'CSE > JAVA' 카테고리의 다른 글
자바 JDBC (0) | 2021.08.16 |
---|---|
[자바 객체 지향] 스프링이 사랑한 디자인 패턴 1 (0) | 2021.08.16 |
[자바 객체 지향] 객체 지향 설계 5원칙 : SRP, OCP, LSP (0) | 2021.08.07 |
[자바 객체 지향] static 블록 (0) | 2021.08.07 |
[자바 객체 지향] 캡슐화 (0) | 2021.08.05 |