<2022년 01월 27일 _ 패스트캠퍼스 챌린지 04일차>
[스프링 입문_객체지향의 설계 5원칙 SOLID]
응집도와 결합도
: 좋은 소프트웨어 설계를 위해서는 결합도coupling는 낮게, 응집도cohension는 높게!
(1) 결합도
: 모듈(클래스)간의 상호 의존 정도의 지표
: 결합도가 낮으면 모듈간의 상호 의존성이 줄어드므로, 객체의 재사용 및 유지보수가 유리함
(2) 응집도
: 하나의 모듈(클래스) 내부에 존재하는 구성 요소들의 기능적 관련성
: 응집도가 높은 모듈은 하나의 책임에 집중하고 독립성이 높아짐
: 응집도가 높을수록 재사용 및 유지보수가 용이함
1. SRP(Single Responsibility Principle) 단일 책임 원칙
: 어떠한 클래스를 변경해야 하는 이유는 한가지 뿐 이어야 한다.
--> 상속을 받아 오버라이딩을 활용한다
2. OCP(Open Closed Principle) 개방 폐쇄 원칙
: 자신의 확장에는 열려있고, 주변의 변화에 대해서는 닫혀있기.
: 상위 클래스 또는 인터페이스를 중간에 둠으로써, 자신은 변화에 대해서 폐쇄적이지만, 인터페이스는 외부의 변화에 대해서 확장을 개방해 줄 수 있음
ex) JDBC, Mybatis, Hibernate등, Java에서는 Stream(Input,Output)
Application
- JDBC Interface
- Oracle Driver : Oracle
- MySQL Driver : MySQL
- H2 Driver : H2
...
3. LSP(Liskov Substitution Principle) 리스코프 치환 원칙
: 서브 타입은 언제나 자신의 기반(상위) 타입으로 교체할 수 있어야 함
LSP 위반 사례
아반떼
- 소나타
- 그랜저
LSP 적용 사례
공중유닛/비행기
- 정찰기
- 수송기
4. ISP(Interface Segregation Principle) 인터페이스 분리 원칙
: 클라이언트는 자신이 사용하지 않는 메서드에 의존 관계를 맺으면 안됨
ex)
지도
: 도보안내, 자동차안내, 바이크안내,자전거안내,하늘길안내,해상길안내, 지하철노선...
자전거네비 -> 자전거 길 안내()
자동차네비 -> 자동차 길 안내()
바이크네비 -> 바이크 길 안내()
항공네비 -> 하늘 길 안내()
해상네비 -> 해상 길 안내()
지도 -> 도보 안내()
※ 프로젝트 요구사항과 설계에 따라 SRP(단일 책임 원칙) or ISP(인터페이스 분리 원칙) 선택
5. DIP(Dependency Inversion Principle) 의존 역전 원칙
: 자신보다 변하기 쉬운 것에 의존하지 말아야 함
: 개방 폐쇄 원칙에서도 비슷하게 살펴본 부분
사람 -> 봄옷
사람 -> 여름옷
사람 -> 가을옷
사람 -> 겨울옷
===>
사람 -> 옷 <- 봄옷,여름옷,가을옷,겨울옷
4일차 강의 완료~
패스트캠퍼스 [직장인 실무교육]
프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.
fastcampus.co.kr
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
'개발새발 > Spring' 카테고리의 다른 글
220129_스프링입문_디자인패턴_디자인패턴이란_패스트캠퍼스 챌린지 06일차 (0) | 2022.01.29 |
---|---|
220128_스프링입문_객체지향_POJO JAVA_패스트캠퍼스 챌린지 05일차 (0) | 2022.01.28 |
220126_스프링입문_객체지향_객체지향 4대 특성_패스트캠퍼스 챌린지 03일차 (0) | 2022.01.26 |
220125_스프링입문_객체지향_객체지향이란_패스트캠퍼스 챌린지 02일차 (0) | 2022.01.25 |
220124_스프링입문_객체지향_개발환경설치_패스트캠퍼스 챌린지 01일차 (0) | 2022.01.24 |