JAVA 9강_5_싱글턴(Singleton)

열라뽕따히·2024년 2월 25일

JAVA

목록 보기
59/79

Member 클래스 생성




=============================코드=============================

public class Member {
	
	// static은 공유하겠다는 뜻
	private static Member instance = null;  // instance라는 정적멤버 선언, Member라는 반환타입
	
	// 싱글턴 방식에서는 public 대신 private으로 선언
	// 외부에서 기본생성자를 직접적으로 접근하지 못하게 함
	private Member() { }  // 기본 생성자 (public -> private)
	
	public static Member getInstance() {  
		
		if(instance == null) {
			
			// Member instance = new Member(); 와 같음 ↓
			instance = new Member();  // 객체 생성, instance가 참조변수
		}
		
		return instance;  // 객체가 생성된 주소값이 return
	}

}



메인메서드에서 객체를 생성할 Member_01클래스 생성




=============================코드=============================

public class Member_01 {

	public static void main(String[] args) {
		
		// Member 클래스 객체 생성
		// private으로 선언했기 때문에 접근이 불가능
		//Member member1 = new Member();
		//Member member2 = new Member();
		//Member member3 = new Member();
		//Member member4 = new Member();
		//Member member5 = new Member();
		//Member member6 = new Member();
		//Member member7 = new Member();
		//Member member8 = new Member();
		//Member member9 = new Member();
		//Member member10 = new Member();
		
		Member member1 = Member.getInstance();  // member1에는 객체가 생성된 주소값이 들어가 있음
		Member member2 = Member.getInstance();  // static이기 때문에 Member.get~ 으로 접근이 가능한 것
		Member member3 = Member.getInstance();  
		Member member4 = Member.getInstance();  
		Member member5 = Member.getInstance();  
		Member member6 = Member.getInstance();  
		Member member7 = Member.getInstance();  
		Member member8 = Member.getInstance();  
		Member member9 = Member.getInstance();  
		Member member10 = Member.getInstance();  
		
		// 1번째 방식으로 객체 생성 시 주소값이 모두 다 다름!! 메모리 낭비가 심함
		// 2번째 방식으로 객체 생성 시 주소값이 모두 같음 메모리가 효율적임
		System.out.println("member1 주소 >>> " + member1);
		System.out.println("member2 주소 >>> " + member2);
		System.out.println("member3 주소 >>> " + member3);
		System.out.println("member4 주소 >>> " + member4);
		System.out.println("member5 주소 >>> " + member5);
		System.out.println("member6 주소 >>> " + member6);
		System.out.println("member7 주소 >>> " + member7);
		System.out.println("member8 주소 >>> " + member8);
		System.out.println("member9 주소 >>> " + member9);
		System.out.println("member10 주소 >>> " + member10);

	}

}

=============================실행=============================

0개의 댓글