본문 바로가기
공부 정리/웹(Web)

싱글톤 패턴(Singleton Pattern)

by 경적필패. 2022. 4. 30.
반응형

싱글톤 패턴이란?

싱글톤...single...single...

싱글톤은 하나만 가지고 노는 패턴 입니다.

즉, 하나의 클래스에 하나의 인스턴스만 가집니다.

 

예를 들면....

책 하나 사서 친구랑 돌려보기,,,

게임cd 하나 사서 친구랑 돌려쓰기 같은 느낌인 것 같습니다.

즉 하나를 생성해서 여기저기 쓰는 패턴을 말합니다.

 

자바스크립트의 싱글톤

ex1)

const ob1 ={
	num1: 1
}

const obj2 ={
	num: 1
}

console.log(obj1 === obj2) // false

ex2)

let instance;
let Singleton = {
  instance: instance,
  createInstance: function () {
    let object = new Object("I am the instance");
    return object;
  },
  getInstance: function () {
    if (!instance) {
      console.log("haha");
      instance = Singleton.createInstance();
    }
    return instance;
  },
};
let instance1 = Singleton.getInstance();
let instance2 = Singleton.getInstance();

console.log(instance1); //[String: 'I am the instance']
console.log(instance2); //[String: 'I am the instance']
console.log(instance1 === instance2); // true

 

스프링에서 singleton...

스프링에서도 singleton을 종종 봤었는데요,

 

1)scope 어노테이션

클래스위에 @scope("singleton") //기본값

를 쓰면 클래스를 싱글톤으로 사용하고

@scope("prototype") => 하나의 클래스에 여러객체 사용가능

@scope("request") => 하나의 request 생명주기에는 하나의 객체만 유지함

...

 

 

2)db를 연결할 때

db를 연결할때도 싱글톤 패턴을 썼던 기억이 납니다.

A와 DB를 연결 할때, 굳이 객체를 여러개 만들어서 연결을 할필요는 없겠죠?

하나의 연결만 사용하면 되기 때문에 이 상황에서도 싱글톤 패턴을 썼습니다.

 

 

 


싱글톤 패턴의 장점

일단 하나의 인스턴스로만 관리하기 때문에 메모리 절약이 가능합니다.

(하나의 책을 사서 돌려보면 돈 절약가능)

 

싱글톤 패턴의 단점

결합도가 매우 높아져버려 객체지향 설계를 위반해버립니다.

또한 TDD를 할때 방해가됩니다. => (결합도가 높아 단위테스트하기가 힘듬)

 

 

강한 결합을 해결하는법

DI(Dependency Injection)(의존성주입)

A->B->C

이러한 의존관계를

D->A

D->B

D->C

로 바꿔줘서  결합도를 낮출 수 있습니다.

 

 

반응형

'공부 정리 > 웹(Web)' 카테고리의 다른 글

테스트 피라미드  (0) 2022.06.28
Js for in Vs for of  (0) 2022.05.20
CSR vs SSR 비교  (0) 2022.04.21
JS 배열 필수함수 (Array Function)  (0) 2022.03.25
JS this  (0) 2022.03.18

댓글