싱글톤 패턴(Singleton Pattern)은 단 하나의 인스턴스만 만들어서 사용할 수 있도록 하는 패턴이다.
public class Student {
private static Student student = null;
public static Student getInstance() {
if (student == null) {
student = new Student();
}
return student;
}
public void printHello() {
System.out.println("");
}
}
Student 클래스를 만들었다.
단 하나의 인스턴스만 만들기 위해서는 생성자의 기능을 막아야 한다.
그렇기 때문에 접근제한자를 private으로 선언해 생성자의 기능을 막았다.
그리고 인스턴스를 만드는 getInstacne 메서드를 만들었다.
이 메서드는 인스턴스가 기존에 존재할 경우 그대로 존재하는 인스턴스를 리턴하고 없으면 하나 만들어서 리턴을 한다.
절대 2개 이상의 인스턴스가 만들어질 수 없도록 했다.
두 개의 StudentA, StudentB 클래스를 만들고 인스턴스를 생성하여 같은지 비교를 해보겠다.
public class StudentA {
private Student studentA;
public StudentA() {
this.studentA = Student.getInstance();
}
public Student returnStudentA() {
return studentA;
}
}
public class StudentB {
private Student StudentB;
public StudentB() {
this.StudentB = Student.getInstance();
}
public Student returnStudentA() {
return StudentB;
}
}
위처럼 StudentA, StudentB 클래스를 만들었고 싱글톤 패턴으로 인스턴스를 각각 만들었다.
이제 메인 클래스를 만들고 둘을 비교해보자.
public class SingletonMain {
public static void main(String[] args) {
StudentA studentA = new StudentA();
StudentB studentB = new StudentB();
System.out.println(studentA.returnStudentA() == studentB.returnStudentA());
}
}
결과는 true이다.