면접을 위해 CS 스터디에서 진행하는 CS 정리용입니다.
'면접을 위한 CS 전공지식 노트' 책을 챕터별 공부하고 요약정리를 하고 있습니다.
- 라이브러리 : 공통으로 사용될 수 있는 특정한 기능들을 모듈화한 것, 폴더명,파일명 등에 대한 규칙이 없고 프레임워크에 비해 자유롭다.
ex) React.js, Vue.js, Spring - 프레임워크 : 공통으로 사용될 수 있는 특정한 기능들을 모듈화한 것, 폴더명, 파일명 등에 대한 규칙이 있으며 라이브러리에 비해 좀 더 엄격하다.
< 디자인 패턴 >
- 프로그램을 설계할 때 발생했던 문제점들을 객체 간의 상호 관계 등을 이용하여 해결할 수 있도록 하나의 '규약' 형태로 만들어 놓은 것
싱글톤 패턴
- 하나의 클래스에 오직 하나의 인스턴스만 가지는 패턴 → 1개의 인스턴스를 다른 모듈들이 공유하며 사용
- 데이터베이스 연결 모듈에 많이 사용
- 장점 : 인스턴스 생성 비용 감소
- 단점 : 의존성(종속성)이 높아진다 → TDD(Test Driven Development)를 하기 힘들다.
- TDD를 할 때 주로 단위테스트를 한다.
- 단위테스트는 테스트가 서로 독립적이어야 하며, 순서에 상관없이 실행 가능해야 한다.
- 싱글톤 패턴은 미리 생성된 1개의 인스턴스를 기반으로 구현하므로 → 각 테스트마다 독립적인 인스턴스를 만들기가 어렵다.
- 의존성 주입(Dependency Injection)
- 메인 모듈과 하위모듈의 중간에 의존성 주입자(dependency injector)를 통해 간접적으로 의존성을 주입하는 방식
- 필드주입/생성자주입/setter 주입
- 의존성 주입 원칙
- 상위 모듈은 하위 모듈에서 어떠한 것도 가져오지 않아야 한다
- 상위&하위 모듈 모두 추상화에 의존해야 한다.
- 추상화는 세부 사항에 의존하지 말아야 한다.
-
- 장점
- 테스팅 하기 쉽고 마이그레이션하기도 수월하다
- 의존성 방향이 일관
- 애플리케이션을 쉽게 추론 가능
- 모듈 간의 관계가 보다 명확
- 단점
- 클래스 수가 늘어나 복잡성이 증가될 수 있다.
- 약간의 런타임 패널티가 생기기도 한다
- 장점
'CS > 디자인패턴&프로그래밍패러다임' 카테고리의 다른 글
디자인 패턴 - 프록시 패턴 (0) | 2023.05.01 |
---|---|
디자인 패턴 - 팩토리 패턴/전략 패턴/옵저버 패턴 (0) | 2023.05.01 |