1.1 디자인 패턴이란?
- 디자인패턴이란 ? : 프로그램을 설계할 때 발생했던 문제점들을 객체 간의 상호 관계 등을 이용하여 해결할 수 있도록 하나의 '규약' 형태로 만들어 놓은 것이다.
1.1.1 Singleton Pattern
- 하나의 클래스에 오직 하나의 인스턴스만 가지는 패턴
- DB 연결 모듈이 많이 사용한다.
- 하나의 인스턴스를 만들어 놓고 해당 인스턴스를 다른 모듈들이 공유하며 사용하므로, 생성비용이 줄어든다.
- 의존성이 높아지는 단점이 있다.
- 단점1) TDD(Test Driven Development)할 때 걸림돌이 된다 : 단위테스트에서 각 테스트마다 독립적인 인스턴스를 만들기가 어렵다.
- 단점2) 의존성 : 사용하기 쉽고 실용적이지만, 모듈 간의 결합을 강하게 만드는 단점이 있다.
이 때 의존성 주입(DI, Dependency Injection)을 통해 모듈 간의 결합을 느슨하게 만들어줄 수 있다.
❓의존성이란 ? : 종속성이라고도 하며, (A가 B에 의존성이 있다 === B의 변경사항에 대해 A도 변해야 한다.)
- 의존성 주입 : 메인 모듈과 하위 모듈의 중간에 의존성 주입자(dependency injector)가 이 부분을 가로채, 메인모듈이 간접적으로 의존성을 주입한다. 이를 통해 메인 모듈은 하위 모듈에 대한 의존성이 떨어진다. 이를 '디커플링 된다' 라고도 한다.
- 의존성주입의 장점 : 의존성주입을 하면 모듈을 쉽게 교체할 수 있게되어 단위테스팅이 쉽고, 마이그레이션도 수월해진다.
또한, 구현 시에 구현체를 넣어 주기 때문에, 애플리케이션 의존성 방향이 일관되고, 쉽게 추론할 수 있으며, 모듈 간의 관계가 더 명확해진다.
- 의존성주입의 단점 : 모듈들이 더욱 더 분리되어 복잡하고 런티임패널티가 생긴다.
- 의존성 주입 원칙 : 상위 모듈은 하위 모듈에서 어떠한 것도 가져오지 않아야 한다. 또한, 둘 다 추상화에 의존해야 하며, 이 때 추상화는 세부 사항에 의존하지 말아야 한다.
Example
- a 와 b는 하나의 인스턴스를 가진다.
DB연결모듈 example
mongooseDB연결모듈 example
'ComputerScience > (짧)CS전공지식노트' 카테고리의 다른 글
1장-디자인 패턴) 이터레이터 패턴 (0) | 2023.02.27 |
---|---|
1장-디자인 패턴) 프록시패턴과 프록시서버 (0) | 2023.02.26 |
1장-디자인 패턴) 옵저버패턴 (0) | 2023.02.20 |
1장-디자인 패턴) 전략패턴 (정책 패턴) (0) | 2023.02.20 |
1장-디자인 패턴) Factory 패턴 (0) | 2023.02.20 |
댓글