일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 자바스크립트
- C언어배우기
- 코딩
- C언어
- 백엔드
- 개발자
- 네트워크관리사2급실기
- 행정관리사
- 프로그래밍
- 네트워크관리사
- 행정관리사3급공부
- 네트워크관리사2급
- 가성비노트북
- 행정관리사합격하기
- 총게임
- 노트북추천
- 실기문제
- 심플한플래너
- 굿노트
- 실기시험
- 행정관리사3급
- 인강용노트북
- 네트워크관리사2급실기문제
- 노트북구매하기
- 실기문제풀이
- 저렴한노트북
- 콜오브듀티
- 노트북추천받기
- 실기시험예제
- Today
- Total
잡다한 사전
(2023.11.29) 객체 지향 설계 5원칙(SOLID) 본문
이번 장에서는 객체 지향 설계 5원칙인 SOLID에 대해서 알아보도록 하겠습니다.
SOLID는 (SRP, OCP, LSP, ISP, DIP)를 이야기하며 5개의 개발 원칙에 대해서 자세하게 알아보도록 하겠습니다.
● SRP (Single Responsibility Principle) : 단일 책임 원칙
● OCP (Open Closed Priciple) : 개방 폐쇄 원칙
● LSP (Listov Substitution Priciple) : 리스코프 치환 원칙
● ISP (Interface Segregation Principle) : 인터페이스 분리 원칙
● DIP (Dependency Inversion Principle) : 의존 역전 원칙
1. 단일 책임 원칙 - SRP (Single Responsibility Principle)
● 특징
☑︎ 단일 책임 원칙은 클랙스는 단 하나의 책임을 가질 수 있다는 원칙이다.
( 하나의 책임을 가질 수 있다는 뜻은 클래스나 모듈을 변경할 이유가 하나 뿐이어야 한다는 원칙을 말합니다.)
☑︎ 하나의 클래스에서 여러개의 기능이 존재하다면 기능 하나의 책임을 수행하도록 클래스를 따로 설계하는 것입니다.
☑︎ 하나의 기능에 책임을 가지는 원칙의 목적은 프로그램의 유지보수를 쉽게 하기위한 설계 기법입니다.
2. 개발 폐쇄 원칙 - OCP (Open Closed Principle)
● 특징
☑︎ OCP의 원칙은 확장에는 열려있으면서 수정에는 닫혀있어야한다는 뜻입니다.
☑︎ 기능을 추가하는 요청이 오면, 클래스를 확장을 통하여 쉽게 구현을 하지만, 확장에 다른 수정은 최소화를 하여 프로그램을 작성하는 설계 입니다.
☑︎ OCP의 원칙은 추상화 사용을 통해 관계 구축을 권장을 의미하는 것을 이야기합니다.
3. 리스코프 치환 원칙 - LSP (Liskov Substitution Principle)
● 특징
☑︎ LSP 원칙은 서브 타입은 항상 부모 타입으로 교체할 수 있어야한다는 원칙입니다.
☑︎ 어플리케이션에서 객체는 프로그램의 동작에 영향을 주지 않으면서, 하위 타입의 객체로 바꿀 수 있어야 합니다.
( 예를 들어, S가 T의 하위 유형이라고 한다면, 프로그램의 기능에 변화를 주지않고 T타입 객체를 S객체로 대체 가능해야합니다. )
4. 인터페이스 분리 원칙 - ISP (Interface Segregation Principle)
● 특징
☑︎ ISP 원칙은 인터페이스를 각각 사용하에 맞게 분리를 해야한다는 설게 원칙입니다.
☑︎ 클라이언트가 필요하지 않는 기능을 가진 인터페이스에는 의존을 해서는 안되며, 최대한 인터페이스를 작게 유지해야합니다.
5. 의존 역전 원칙 - DIP (Dependency Inversion Principle)
● 특징
☑︎ DIP 원칙은 어떤 Class를 참조해서 사용하는 상황이 생긴다면, 참조하는 Class를 직접 참조하는 것이 아닌, 그 대상의 상위 요소로 참조를 하라는 원칙이다.
☑︎ 구현 클래스에 의존을 하기보다, 인터페이스에 의존을 하라는 의미입니다.
'프로그래밍 언어 > node.js' 카테고리의 다른 글
(2023.12.05) 3 Layer Architecture (0) | 2023.12.08 |
---|---|
(2023.12.4) Prisma에 대해서 알아보자 (0) | 2023.12.05 |
(2023.11.28) 팀 프로젝트를 마무리하면서.. (0) | 2023.11.28 |
(2023.11.23) (React) useState를 이용한 값 받기 (0) | 2023.11.28 |
(2023.11.22) (React) Props와 State (1) | 2023.11.28 |