싱글턴 패턴

하나의 클래스에 단 하나의 인스턴스만을 생성하여 공통적으로 사용하는 것.

new로 생성자를 생성할 수 없으며 인스턴스는 private으로 선언한다.

static으로 선언된 필드를 공유하는 개념으로 사용한다.

(스프링 프레임워크에서 사용하는 방식)




1) 객체 필드에서 바로 생성하는 방법


class Bank {

String name;

private static Bank bank = new Bank("단풍은행"); // 자기 클래스의 객체 생성

// static으로 정의되어 메서드 영역의 메모리에 할당. 


private Bank(String name) { // private으로 선언되어 다른 클래스에서는 참조 불가.  

this.name = name; // 생성자를 정의

}

public static Bank Instance() { // 같은 클래스에서 참조변수를 액세스하려면 static으로 선언.

return bank; // 싱글톤 패턴에서는 메서드를 통해 이렇게 반환해준다.

}

public String getName() {

return name;

}

}


public class SingletonDesignPattern {

// public 클래스는 2개 이상의 public 클래스를 생성할 수 없다.

public static void main(String[] args) {

// bank의 객체를 가져오려면 원래는 new로 객체를 생성했으나 위와 같이 싱글톤으로 만들면 다음과 같이 불러올 수 있다.

Bank bank = Bank.Instance();

System.out.println("Bank 이름은 " + bank.getName());

}

}




2) 생성자에서 객체를 생성하는 방법


class Bank {
String name;
private static Bank bank; // 필드만 생성해둠 

private Bank(String name) {   
this.name = name;
}
public static Bank Instance() { // if문을 통해 반환하는 방법
if(bank == null) {
bank = new Bank("단풍은행");
}
return bank;
}
public String getName() {
return name;
}
}

public class SingletonDesignPattern {

public static void main(String[] args) {
Bank bank = Bank.Instance();
System.out.println("Bank 이름은 " + bank.getName());
}
}



Posted by netyhobby
,