다연이네

[days16] 싱글톤패턴 본문

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

반응형
Comments