디자인 패턴이란 프로그램을 설계할 때 발생했던 문제점들을 객체 간의 상호 관계 등을 이용하여 해결할 수 있도록 하나의 약속으로 만들어 놓은 것을 말한다.
**디자인 패턴 장점**
1) 디자인 패턴은 이미 정의되어 있으며 반복적인 문제를 해결하기 위한 업계 표준 접근 방식을
제공하므로 설계 패턴을 사용하면 시간이 절약된다.
2) 디자인 패턴을 사용하면 재사용이 촉진되어 보다 강력하고 유지관리 가능한 코드가 생성되고
설계 패턴이 이미 정의되어 있기 때문에 코드를 쉽게 이해하고 디버깅할 수 있다.
싱글톤 패턴(Singleton Patton)은 하나의 클래스에 오직 하나의 인스턴스만 가지는 패턴이다. 보통 데이터베이스 연결 모듈에 많이 사용한다.
하나의 인스턴스를 만들어 놓고 해당 인스턴스를 다른 모듈들이 공유하며 사용하기 때문에 인스턴스를 생성할 때 드는 비용이 줄어드는 장점이 있다. 하지만 의존성이 높아진다는 단점이 있다.
싱글톤 패턴의 예시
먼저 private static으로 Singleton객체의 instance를 선언하고 getInstance()메서드가 처음 실행 될 때만 하나의 instance가 생성되어야 한다. 그 후에는 이미 생성되어진 instance를 return한다. 여기서 핵심은 private로 된 기본 생성자이다. 생성자를 private로 생성을 하며 외부에서 새로운 객체의 생성을 막아줘야 한다.
싱글톤 패턴의 단점
싱글톤 패턴은 TDD(Test Driven Development)를 할 때 거슬린다. TDD를 할 때 단위 테스트를 주로 하는데, 단위 테스트는 테스트가 서로 독립적이어야 하며 테스트를 어떤 순서로든 실행할 수 있어야 한다. 하지만 싱글톤 패턴은 미리 생성된 하나의 인스턴스를 기반으로 구현하는 패턴이므로 각 테스트마다 독립적인 인스턴스를 만들기가 어렵다.
*TDD : XP방법론 중 하나이며 작은 단위의 테스트 케이스를 작성하고 이를 통과하는 코드를 추가하는 단계를 반복하여 구현한다.
자바스크립트의 싱글톤 패턴
자바스크립트에서는 리터럴 {} 또는 new Object로 객체를 생성하게 되면 다른 어떤 객체와도 같지 않기 때문에 이 자체만으로 싱글톤 패턴을 구현할 수 있다.
obj1와 obj2는 다른 인스턴스를 가진다.
Singleton.instance라는 하나의 인스턴스를 가지는 싱글톤 클래스를 구현한 것이다. 이를 통해 a와 b는 하나의 인스턴스를 가진다.
'CS' 카테고리의 다른 글
[Docker] 도커를 왜 사용할까? (1) | 2024.11.05 |
---|---|
프로세스 스케줄링 (0) | 2023.04.01 |
운영체제 (OS: Operating System) (0) | 2023.03.18 |
MVC 패턴 (0) | 2023.02.20 |