static 변수, 메서드는 데이터 영역에 속함
static 예약어를 사용할때 해당 static 변수나 메서드는 외부에서 클래스로 접근하여 호출가능
여러 인스턴스에서 공용으로 쓰기위해 사용한다.
싱글톤 패턴
프로그램에서 인스턴스가 단 한개만 생성되어야 하는 경우 사용하는 디자인 패턴
static 변수, 메서드를 활용하여 구현 할 수 있음
ex) 회사
// Company.java class
public class Company {
private static Company instance = new Company(); // 유일한 instance Company 인스턴트
private Company() { // private처리로 외부에서 생성자를 생성하지못하게한다.
}
public static Company getInstance() { // static 으로 선언하여 외부에서 클래스이름으로 호출가능
if(instance) == null) {
instance = new Company();
}
return instance;
}
}
오직 getInstance static 메서드를 통해서 static 클래스 instance를 가져올수있다.
// CompanyTest.java main
public class CompanyTest {
public static void main(String[] args) {
Company company1 = Company.getInstance();
Company company2 = Company.getInstance();
System.out.println(company1);
System.out.println(company2);
}
}
Company 클래스로 company1, 2 라는 참조변수를 만들고 해당값에 Company로 직접 접근하여 우리가 public으로 만든 getIntance를 통해 static 클래스 instance를 가져왔다
결과
(-)는 private, (+) 는 public을 나타낸다. 따라서 Singleton이라는 클래스이름에 Instance라는 private 맴버 변수가 있고 Singleton 이라는 생성자가 private이고, getIntance는 public 제공된다.
'언어 > 자바' 카테고리의 다른 글
객체지향OOP, 도메인 구조(서비스, 레퍼지토리, 컨트롤러, 모델 ) (0) | 2024.06.26 |
---|---|
추상클래스/템플릿 메서드, final 예약어 (0) | 2023.11.11 |
가상 메서드 원리/메서드 재정의(@Override) (0) | 2023.11.09 |
[Java] 클래스, 인스턴스, 힙메모리 (0) | 2023.11.05 |