싱글톤 패턴

김예진·2023년 1월 6일
0

java

목록 보기
21/21

✨싱글톤 패턴이란?

  • 하나의 클래스에 오직 하나의 객체 인스턴스만 가지는 패턴
  • 하나의 인스턴스를 만들어 놓고 해당 인스턴스를 다른 모듈들이 어디에서든 공유하며 접근, 사용할 수 있음
  • 싱글톤 패턴으로 만들어진 클래스는 생성자가 여러번 호출 되더라도, 실제로 생성되는 객체는 하나이고 최초 생성 이후에 호출된 생성자는 최초의 생성자가 생성한 객체를 보냄
  • 주로 공통된 객체를 여러 개 생성해서 사용하는 DBCP(Database Connection Pool)와 같은 데이터베이스 연결 모듈에 많이 사용됨
    주로 공통된 객체를 여러 개 생성해서 사용하는 DBCP (Database Connection Pool)와 같은 데이터베이스 연결 모듈에 많이 사용된다.

✨싱글톤 구조

출처 https://www.youtube.com/watch?v=TO9XnSkuUtg

✨싱글톤 패턴의 장점

  • 인스턴스가 하나이기 때문에 인스턴스를 생성할 때 드는 비용이 줄어듬
  • static을 사용하여 별도의 메모리 영역을 얻으면서 한번의 new 연산자로 인스턴스를 사용하기 때문에 메모리 낭비를 방지할 수 있음

✨싱글톤 패턴의 단점

  • 싱글톤 인스턴스를 여러곳에서 많이 공유할 경우 다른 클래스의 인스턴스 간 의존성이 높아질 수 있음(객체간의 독립성을 지향하는 객체지향 원칙에 어긋남)
  • 의존성이 높아지면 수정작업이나 테스트를 진행하기 어려워짐

✨예제 코드
Main에 문지기를 한명만 만들고 싶은 상태
DoorMan.java

package com.test.proxypatten.ex1;

public class DoorMan {

	//static을 사용해서 main 메소드를 호출하기 전 메모리에 올려줌
	private static DoorMan doorMan = new DoorMan();

	public static DoorMan getInstance(){
		return doorMan;
	}

	private DoorMan(){//생성자 만들어주고 외부에서 실행못하게 private으로 설정

	}
	public void 쫓아내(Animal a){
		System.out.println(a.getName() + " 쫓아내");
	}

}

main.java

package com.test.proxypatten.ex1;

public class App {
	public static void main(String[] args){
		// DoorMan doorMan = new DoorMan();

		DoorMan doorMan = DoorMan.getInstance();
		doorMan.쫓아내(new Cat());
	}
}

private 타입으로 설정해두어서 외부에서 DoorMan 메소드를 호출하려고 하려고 하면 에러가 발생함

참고자료
https://cheershennah.tistory.com/223
https://www.youtube.com/watch?v=hTczMWXGEk8

0개의 댓글