일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- 분할정복
- GIT
- Spring
- 그리드 알고리즘
- dfs
- 백준
- 자료구조
- 컴퓨터 네트워크
- 순열
- 자바
- CI/CD
- 다이나믹프로그래밍
- BFS
- 도커
- 역방향 반복자
- 그리드
- github action
- 그래프
- 스프링
- 분할 정복
- 트리
- 브루트포스
- TCP
- 알고리즘
- SQL
- 재귀
- HTTP
- 다이나믹 프로그래밍
- AWS
- 이분탐색
- Today
- Total
코딩성장스토리
자바 객체 개념 (SOLID) 본문
SOLID를 사용하는 이유: 응집도를 높이고 결합도를 낮추기 위한 객체지향의 관점에서 재정립
SRP - 단일 책임 원칙
어떤 클래스를 변경해야 하는 이유는 오직 하나 뿐이어야 한다.
즉, 책임(역할)을 분리해야하는 것이다.
ex) 강아지가 수컷암컷이 있으면 강이지 클래스에 성별을 넣기 보다는
강아지를 상속받는 수컷,암컷 클래스를 만들어 강아지에게 성별 역할까지 주지 않는 것이다.
OCP - 개방 폐쇄 원칙
확장에 대해서는 열려 있어야 하지만 변경에 대해서는 닫혀 있어야한다.
ex) 운전자가 쏘나타라는 차를 가지고 있다. 그러다가 마티즈로 변경을 했는데 차 변경이 운전자에게 영향을 미치게 된다.즉 이럴 때 자동차라는 클래스를 만들어 쏘나타랑 마티즈를 상속받게 한다. 그러면 자동차 입장에서는 확장이 열려있고 운전자는 변화에 닫혀있다.
LSP - 리스코프 치환 원칙
서브 타입은 언제나 자신의 기반타입으로 교체할 수 있어야 한다.
조직도/계층도가 잘못된 예시고 분류도가 이를 잘지키고 있다.
ex)계층도를 나타내는 아버지 -딸 구조를 보자 . 딸은 아버지의 역할을 할 수 없으므로 교체 불가능, 분류도를 나타내는
동물-펭귄을 보면 펭귄은 동물 역할을 할 수있으므로 교체 가능
ISP - 인터페이스 분리 원칙
사용자는 자신이 사용하지 않는 메서드에 의존 관계를 맺으면 안된다.
SRP 와 ISP 는 같은 문제에 대한 다른 두가지 해결책이라 볼 수 있다.
ex) 남자라는 클래스가 있고 여기에 역할을 분할 한다고 생각해보자. 이때 남자친구 클래스 ,군인 클래스 등 이렇게 만드는 것이 SRP 이고 ISP 는 남자라는 클래스에 남자친구 인터페이스 군인 인터페이스를 만들어 남자친구는 남자친구 역할만 할 수 있게 만드는 것이다.
상위클래스는 풍성할수록 좋고 인터페이스는 작을 수록 좋다.
DIP -의존 역전 원칙
구체적인 것이 추상화 된 것에 의존 해야한다. (즉 자신보다 변하기 쉬운 것에 의존 하면 안된다.)
ex)자동차가 스노우타이어를 가리킨다고 보자. 그러면 자동차가 변하기 쉬운 스노우 타이어를 의존하는 것이다.
이것을 타이어라는 인터페이스를 만들고 다양한 타이어들이 타이어를 가리키게 만들자. 그러면 변화기 쉬운 타이어종류들이 타이어 인터페이스에 의존하게 되는것이고 자동차는 타이어만 가리키면 된다.
'백 엔드 > java' 카테고리의 다른 글
자바 개념과 이해 2 (0) | 2022.04.07 |
---|---|
자바의 역사와 이 (0) | 2022.04.02 |
자바 공부하면서 주의한것 (1) | 2021.12.04 |
자바:Java(4) (1) | 2021.10.28 |
자바:Java(3) (0) | 2021.10.27 |