Java
[days16] 싱글톤패턴
다연
2020. 10. 17. 22:20
반응형
싱글톤 패턴
1. 단 하나만의 객체를 생성해서 사용하겠다
2. 전체 프로그램 상에서 단 하나만의 객체만 생성하도록 보장하는 패턴
3. new 클래스() 불가
public class Ex07 {
public static void main(String[] args) {
/* DBComponent com1 = new DBComponent(); //new 쓸때마다 새로운 DB컴포넌트 생성
DBComponent com2 = new DBComponent();
DBComponent com3 = new DBComponent();
DBComponent com4 = new DBComponent();
*/
//에러 : The constructor DBComponent() is not visible
//DBComponent com4 = new DBComponent();
//생성자를 private로 선언하면 new 연산자 매번 객체 생성을 못한다
DBComponent com1 = DBComponent.getDBComponent();
DBComponent com2 = DBComponent.getDBComponent();
DBComponent com3 = DBComponent.getDBComponent();
DBComponent com4 = DBComponent.getDBComponent();
System.out.println(com1.hashCode()); //해시코드 : 객체가 동일한 객체인지 확인하기 위한 코드값
System.out.println(com2.hashCode());
System.out.println(com3.hashCode());
System.out.println(com4.hashCode());
}
}
// DB 연결해서 처리하는 객체 필요
class DBComponent{
private DBComponent() { //1. 매번 객체를 생성하지 못하도록 private로 생성자 선언
} //이놈에 의해new에 의해 객체선언 못함
// 3. static 필드는 프로그램 시작과 동시에 메모리에 할당
private static DBComponent dbCom = null; // Car car = new Car 해서 Car 메소드 가져오는것
//얘는 왜 static ? 객체 생성 없이 메모리에 올라가있어야 하니까
// 2. static 메소드는 프로그램 시작과 동시에 메모리에 할당
// static +리턴타입이 DBComponent+ getInstance()
public static DBComponent getDBComponent() { // 이 메서드 자체가 dbCom 객체를 넘겨주니깐.. 다른 .. 매개변수 필요 없어요..
if(dbCom == null) {
dbCom = new DBComponent(); //한번도 안만들어졌으면 생성해서 돌리고
} //한번이라도 만들어졌다면 생성 없이 있는 놈 그냥 돌리고
return dbCom;
}// 이 코딩에 의해 매번 만드는게 아니라 없을때만 만드는것
}
출력값
366712642
366712642
366712642
366712642
반응형