package com.util;
import java.awt.image.SinglePixelPackedSampleModel;
//Singleton pattern 이 적용된 클래스
//객체 생성을 한번만 수행하고 그 이후로는 생성된 객체 공유
//singleton pattern 객체 조건
//private, static field : 필드는 static 이고 private 이여야 한다.
//생성자 private 이여야 한다. (외부에서 객체 생성이 불가능함)
//getInstance():객체를 생성해서 리턴해 주는 static method가 꼭 있어야 한다.
public class SingletonObject {
private static SingletonObject instance; //자기 자신 타입 SingletonObject 인 필드 생성
private SingletonObject() { //생성자는 private 이여야 한다 (외부에서 객체 생성이 불가능하게)
}
public static SingletonObject getInstance() { //객체는 getInstance() 통해서만 생성 가능하게 한다
if(instance == null) {
instance = new SingletonObject(); // 이미 만들어진 instance 가 없으면 객체를 생성하고
있으면 바로 return 해준다
}
return instance;
}
public void print() {
System.out.println("hello, print!");
}
}
생성자를 접근을 못하니까 바로 메소드를 불러서 객체를 생성한다.
package com.util;
public class SingletonObjectUser {
public static void main(String[] args) {
SingletonObject o1 = SingletonObject.getInstance(); //생성자를 메소드로 불러서 객체 생성
SingletonObject o2 = SingletonObject.getInstance();
SingletonObject o3 = SingletonObject.getInstance();
o1.print();
o2.print();
o3.print();
System.out.println(o1==o2);
System.out.println(o3==o2);
}
}
'JAVA > JAVA 개발, 알고리즘 tip' 카테고리의 다른 글
타입 상속을 하는 이유 (0) | 2019.01.20 |
---|---|
#Wrapper class 기본형 데이터를 참조형(클래스)로 바꿈 (0) | 2019.01.19 |
Java #StringBuilder 문자열을 편집하여 사용하고자 할 경우! (0) | 2019.01.19 |
Java #String 클래스 (0) | 2019.01.19 |
#equals(Object o) : boolean - 객체의 내용을 비교 (0) | 2019.01.19 |