Skip to content

Latest commit

 

History

History
81 lines (53 loc) · 2.66 KB

2024-05-28.md

File metadata and controls

81 lines (53 loc) · 2.66 KB

날짜: 2024-05-28


🌤️ 스크럼

  • 학습 목표 1 : 자바 싱글톤 이해하기

⚡️ 새로 배운 내용

[JAVA] 싱글톤 패턴

전체 프로그램에서 단 하나의 객체만 생성하도록 보장하는 디자인 패턴

  • 필요성

    • 객체를 여러 개 생성하면 메모리 낭비가 발생할 수 있다.
    • 객체를 여러 개 생성하면 객체 간의 데이터 불일치 문제가 발생할 수 있다.
  • 사용 목적

    • 정보를 보관하고 공유하고자 하는 클래스가 한 번의 메모리에만 할당되고 그 할당한 메모리를 객체로 관리하기 위해
    • 객체의 일관된 상태를 유지하고 전역에서 접근 가능하도록 하기 위해
    • 메모리 낭비를 방지하기 위해
    • 정보 공유 차원에서 변수 관리, 즉 동기화에 유리 하다.
  • 구현 방법

    • 생성자를 private으로 선언 하여 외부에서 new 키워드로 객체를 생성할 수 없도록 막는다.
    • 자신의 타입인 정적 필드를 하나 선언 하고 자신의 객체를 생성해 초기화한다.
    • 외부에서 호출할 수 있는 정적 메소드인 getInstance()를 만들어 자신의 객체를 반환 한다.
    public class 클래스 {
      // 정적 필드
      private static 클래스 instance = new 클래스();
    
      // 생성자
      private 클래스() {}
    
      // 정적 메소드
      public static 클래스 getInstance() {
        return instance;
      }
    }
  • getInstance()
    외부에서 객체를 유일한 방법은 정적 메소드인 getInstance()를 호출하는 것이다.

    클래스 객체1 = 클래스.getInstance();
    클래스 객체2 = 클래스.getInstance();
    • 객체1과 객체2는 동일한 객체를 참조한다.
  • 단점

    • 전역에서 접근을 허용하기 때문에 해당 인스턴스에 의존하는 경우 결합도가 높아질 수 있다.
    • 결합도 증가로 인해 유닛 테스트에서 테스트하기 어려울 수 있다.
    • 잘못 구현된 경우 멀티스레드 환경에서 문제가 발생할 수 있다.

🔥 오늘의 도전 과제와 해결 방법


🤔 오늘의 회고

  • 스크럼 중 완료한 작업: 자바 싱글톤 이해하기
  • 상세히 알지 못했던 개념을 조사하고 정리하면서 싱글톤 패턴에 대해 이해할 수 있었다. 자주 사용될법한 패턴인데 아직 직접 사용해보지는 않아서 이후에 사용해보면서 더 깊게 이해해보고 싶다!

참고 자료 및 링크