Java 기초 (15) 싱글톤패턴

코린이서현이·2023년 7월 19일
0

Java

목록 보기
15/46

⚾오늘의 목표⚾

클래스로 여러 인스턴스들을 만들 수 있는 것을 배웠다.
그런데 인스턴스가 딱 하나만 필요하고 또 다른 인스턴스를 만들지 말아야할 때는 어떻게 할 수 있을까?
Java에서는 이를 싱글톤 패턴이라고 한다. 싱글톤 패턴에 대해서 알아보자.

📕 싱글톤패턴

객체의 인스턴스가 오직 1개만 생성되는 패턴이다.

🤔고민해보기

  • 객체의 인스턴스가 하나만 만들어지게 제한을 두려면 어떻게 해야할까?
    ➡️ 외부에서 생성자를 통해서 만들 수 없게 만들어야한다. (private를 이용해 생성자 접근을 제한함)
	//외부에서 생성자를 통해 인스턴스를 생성할 수 없도록 private를 붙인다.
	private Singclass() {}
  • private가 있는 생성자를 어디서 만들어야할까?
    ➡️ private는 해당 클래스에서만 접근할 수 있다. 따라서 그 클래스내에서만 생성자를 통해 만들 수 있게된다.
    또한 인스턴스가 생성되지 않아도 객체가 생성되도록 static을 써야한다.
    또 외부에서 이 인스턴스에 접근하지 못하도록 private를 써야한다.
	//인스턴스가 생성되지 않아도 객체가 생성되도록 static을 붙인다.
	//외부에서 이 인스턴스에 접근하지 못하도록 private를 붙인다.
	private static Singclass singl = new Singclass();
  • 다른 클래스에 인스턴스 정보를 어떻게 줘야할까?
    ➡️ 다른 클래스에서도 접근가능한 메소드를 통해서 인스턴스주소를 제공해야한다.
    인스턴스가 만들어지지 않고도 다른클래스에서 메소드를 호출할 수 있도록 static을 붙여야한다.
	//인스턴스가 생성되지 않아도 다른 클래스에서 메소드를 사용할 수 있도록 static을 붙인다.
	static Singclass getSingclass() {
		return singl;
	}

➕ return에 this를 쓸 수 없는 이유 : static메소드에는 인스턴스 변수가 올 수 없다.

✍️ 예시코드

  package test;

  class Singclass {

      //외부에서 생성자를 통해 인스턴스를 생성할 수 없도록 private를 붙인다.
      private Singclass() {}

      //인스턴스가 생성되지 않아도 객체가 생성되도록 static을 붙인다.
      //외부에서 이 인스턴스에 접근하지 못하도록 private를 붙인다.
      private static Singclass singl = new Singclass();

      //인스턴스가 생성되지 않아도 다른 클래스에서 메소드를 사용할 수 있도록 static을 붙인다.
      static Singclass getSingclass() {
          return singl;
      }	
  }
  public class SingletonTest {

      public static void main(String[] args) {
          Singclass n1 =  Singclass.getSingclass();
          Singclass n2 =  Singclass.getSingclass();

          System.out.println(n1);					//test.Singclass@7c30a502 
          System.out.println(n2);					//test.Singclass@7c30a502


      }

  }

👉 실행화면
: 인스턴스는 딱 하나만 생성되므로 n1과 n2모두 같은 값을 가진다.

	test.Singclass@7c30a502
	test.Singclass@7c30a502

😁오늘의 느낀 점😁

주제에서 벗어난 이야기지만 요즘 my stupid heart이란 노래에 빠졌다...❤️‍🔥
되게 좋은 노래니까 다들 한번씩 들어봤으면 좋겠다 (●'◡'●) 
특히 애기가 부르는 버전이 있는데 나까지 천진난만한 어린이가 되는 기분이 엄청 좋다..ㅎ
그리고 어제 처음으로 내 벨로그에 댓글이 달렸다...!! 공부에 의욕이 더 생긴다.ㅎ

참고

싱글톤패턴이란?

profile
24년도까지 프로젝트 두개를 마치고 25년에는 개발 팀장을 할 수 있는 실력이 되자!

1개의 댓글

comment-user-thumbnail
2023년 7월 19일

아주 유용한 정보네요!

답글 달기