언어/자바

static 변수, 메서드 / 싱글톤패턴

youngble 2023. 11. 6. 23:36

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 제공된다.