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);
}
}
=============================실행=============================
