User.java

    package kr.co.kihd.singleton;
    
    public class User {
    	
    	//1)해당 클래스 자신의 타입으로 정적 멤버 선언과 동시에 생성함.
    	private static User singleton = new User();
    	
    	//기본생성자 접근제어자 private로 변경
    	//2)해당 클래스를 외부에서 new 연산자로 인스턴스를 생성 못하게 막아놓은것.
    	private User() {
    		
    	}
    	
    	//3)해당 클래스 멤버의 주소를 넘겨주기(공유)
    	//외부에서 호출할수 있는 getter() 메서드를 제공
    	public static User getInstance() {
    		return User.singleton;
    	}
    }
    

    UserTest.java

    package kr.co.kihd.singleton;
    
    
    import java.util.Calendar;
    import java.util.Date;
    
    public class UserTest {
    
    	public static void main(String[] args) {
    	
    		//User user1 = new User();
    		User user1 = User.getInstance();
    		User user2 = User.getInstance();
    		
    		System.out.println(" user1의 주소 : " + user1);
    		System.out.println(" user2의 주소 : " + user2);
    		
    		//Object 클래스의 equals() : 주소 비교
    		if(user1.equals(user2)) {
    			System.out.println("같은 객체 입니다.");
    		}else {
    			System.out.println("다른 객체 입니다.");
    		}
    		
    		//객체의 == 연산자 :  주소값 비교연산
    		if(user1==user2) {
    			System.out.println("같은 객체 입니다.");
    		}else {
    			System.out.println("다른 객체 입니다.");
    		}
    		
    		/*
    		 * 싱글톤 패턴을 사용하는 이유:
    		 * 단 하나의 인스턴스를 생성해서 서로 공유를 원하고자할 때 사용
    		 * ex) 사용자 환경설정, 커넥션 풀(DB연동 리소스), 스레드풀, OS의 시간이나 날짜등.
    		 */
    		
    		Calendar calendar = Calendar.getInstance();
    		Date date = calendar.getTime();
    		System.out.println(date);
    		
    	}
    	
    }
    
    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기
    loading