TIL-20-04-17
Updated:
싱글톤
- 전체 프로그램에서 단 하나의 객체만 만들도록 보장해야 하는 경우, 이 객체를 싱글톤이라고 함.
- 클래스 외부에서 new 연산자로 생성자를 호출할 수 없도록 생성자 앞에 private 붙여줌
- 자신의 타입인 정적 필드를 하나 선언하고, 자신의 객체를 생성해 초기화
- 대신 외부에서 호출할 수 있는 정적 메소드인 getInstance() 를 선언하고,
- 정적 필드에서 참조하고 있는 자신의 객체를 리턴
public class 클래스 {
//정적 필드
private static 클래스 singleton = new 클래스();
//생성자
private 클래스() {}
//정적 메소드
static 클래스 getInstance() {
return singleton;
}
}
- 외부에서 객체를 얻는 유일한 방법은 getInstance() 메소드
클래스 변수1 = 클래스.getInstance();
클래스 변수2 = 클래스.getInstance();
final 필드와 상수
final 필드
- final 필드는 초기값이 저장되면 최종적인 값이 되어서 프로그램 실행 도중에 수정 불가
final 필드의 초기값 주는 방법
1) 단순 값일 경우 필드 선언 시에 초기화(주로 정적 필드(상수)일 경우) 2) 객체 생성 시에 외부 데이터로 초기화 필요한 경우 생성자에서 초기화(인스턴스 필드의 경우)
인스턴스 final 필드
final 타입 필드 [= 초기값];
정적 final 필드
- 불변의 값인 상수를 만들 경우 ex)파이나 지구의 무게 및 둘레 등
- 상수는 객체마다 저정할 필요가 없는 공용성을 띄고 있어서 static final 필드로 선언
static final 타입 상수 = 초기값;
- 상수 이름은 대문자로 작성하는 것이 관례. 혼합된 이름은 언더바(_)로 단어를 연결.
static final double PI = 3.14159;
static final double EARTH_RADIUS = 6400;
static final double EARTH_AREA = 4 * Math.PI * EARTH_RADIUS * EARTH_RADIUS;
용어 마무리
- 인스턴스 멤버 : 객체(인스턴스)를 생성한 후 사용할 수 있는 필드와 메소드. 각각 인스턴스 필드, 인스턴스 메소드라 부름
- this : 객체 내부에서도 인스턴스 멤버에 접근하기 위해 this를 사용할 수 있음. 생성자와 메소드의 매개 변수 이름이 같을 때, 인스턴스 멤버인 필드임을 명시할 때 사용.
- 정적 멤버 : 클래스에 고정된 멤버로서 객체를 생성하지 않고 사용할 수 있는 필드와 메소드
- static : 정적 멤버를 선언할 때 사용하는 키워드
- 싱글톤 : 전체 프로그램에서 단 하나의 객체만 만들도록 보장할 때, 이 객체를 싱글톤이라고 함.
- final 필드 : 초기값이 저장되면 최종적인 값이 되어서 프로그램 실행 도중에 수정할 수 없는 필드
- 상수 : 수학에서 사용되는 불변의 값을 저정하는 필드를 자바에서는 상수라고 함. final static 키워드로 선언