본문 바로가기
개발자 양성과정 필기노트/JAVA

싱글톤 디자인 패턴 / final / 상수

by jono 2021. 9. 14.

JAVA  ||  DAY8  ||  싱글톤 디자인 패턴, final, 상수


 1. 싱글톤 디자인 패턴 

  • 프로그램에서 단 하나뿐인 유일한 객체(인스턴스)
  • 새로운 인스턴스 생성을 불가능하게 하며, 미리 생성된 하나의 인스턴스를 모든 참조변수에서 공유해서 사용함.

 

# 싱글톤 패턴 작성순서

1. 기본생성자 생성함, 이때 접근제한자는 private으로 설정
   -> 객체가 생성되면 안되므로, 외부에서 생성자 호출을 못하도록 접근제한자를 private으로 선언

class SingletoneClass{
   private SingletonClass(){};
}

2. 자신의 클래스 내에서 인스턴스 생성하여 참조변수에 저장함
  - 접근제한자를 private로 선언
  - 참조변수를 static 로 선언하여 객체 생성없이 로딩

class SingletonClass{
private static SingletonClass stInstance = new SingletonClass();
}

3. 생성된 인스턴스를 외부로 리턴하는 GETTER 정의
  - static변수를 리턴하므로, GETTER메서드도 static으로 선언한다.

class SingletonClass{

  private SingletonClass(){}; //1. private 기본생성자

  private static SingletonClass stInstance = new SingletonClass(); // private static 인스턴스 생성

  public static SingletonClass getInstance(){ // private 인스턴스에 접근하기위한 Getter메서드 생성
      return stInstance;
  }

}

 2. final 

해당 선언이 최종상태이며, 수정될 수 없음을 의미함.

 

1) 멤버변수에 final이 붙는 경우

- 변수값 변경 불가능 => 상수로 취급된다.
- 기존에 저장된 값을 사용하는 것만 가능하고, 값을 변경할 수는 없다.

 

2) 메서드에 final이 붙는 경우

- 메서드 변경 불가 == 오버라이딩 금지
- 슈퍼클래스의 메서드를 상속받아 사용하는 사용하는 것은 가능하나, 오버라이딩을 통해 슈퍼클래스의 메서드를 변경할 수는 없다.

 

3) 클래스에 final이 붙는 경우

- 클래스 변경 불가 == 상속 금지

- 특정 클래스 자체를 그대로 사용하는것은 가능하나, 해당 클래스를 다른클래스에 상속할 수는 없다.

- 인스턴스 생성은 당연히 가능하다


 3. 상수 

  • 항상 같은 값을 같는 데이터 = Literal
  • 변수중에서도, 값이 변하지않는 변수를 일컫는다.
  • 보통 변수에 static final을 붙여 표현한다.
  • 이름을 대문자로 선언하며, 단어 사이 구분기호로 _ 기호를 사용한다.
  • Getter / Setter 메서드와 함께 사용하면 매우 편리하다

# 장점

어떤 클래스에 데이터를 저장하고 해당 데이터를 판별하는 경우,

비교 데이터를 잘못지정하거나 오타가 발생하는 등의 경우로 인해 올바른 비교가 수행되지 않을 가능성이 있다.

 

이를 예방하기 위하여 클래스에서 상수를 통해 사용될 데이터를 제공하면 상수명 만으로 해당 데이터의 값을 몰라도 사용이 가능하므로 편의성,코드의 안정성, 유지보수성을 증대시킬 수 있다.

'개발자 양성과정 필기노트 > JAVA' 카테고리의 다른 글

Import / 접근제한자 / 상속 / 생성자  (0) 2021.10.02
추상클래스와 인터페이스  (0) 2021.09.28
Static  (0) 2021.09.14
JAVA 객체지향개념  (0) 2021.09.02
배열  (0) 2021.08.12

댓글