Pattern - No. 07 디자인 모델 의 단일 예 모델

2521 단어
1. 하나의 클래스 가 하나의 인 스 턴 스 만 있 는 지 확인 하고 전체적인 방문 점 을 제공 합 니 다.
2. 배 부 른 한식 단일 사례 실현
package com.shma.singleton;

/**
 *        
 * @author admin
 *
 */
public class Singleton01 {

	private static Singleton01 uniqueInstance = new Singleton01();
	
	private Singleton01() {
		
	}
	
	public static Singleton01 getInstance() {
		return uniqueInstance;
	} 
}

3. 굶 주 린 한식 단일 사례 실현
package com.shma.singleton;

/**
 *          
 * @author admin
 *
 */
public class Singleton02 {

	private volatile static Singleton02 uniqueInstance = null;
	
	private Singleton02() {
		
	}
	
	public static Singleton02 getInstance() {
		if(uniqueInstance == null) {
			synchronized (Singleton02.class) {
				if(uniqueInstance == null) {
					uniqueInstance = new Singleton02();
				}
			}
		}
		
		return uniqueInstance;
	}
}

4. 초콜릿 보일러 류, 초콜릿 보 일 러 는 하나의 예 입 니 다.
package com.shma.singleton.chocolate;

/**
 *         
 * @author admin
 *
 */
public class ChocolateBoiler {

	//           
	private boolean empty = false;
	
	//           
	private boolean boiled = false;
	
	private volatile static ChocolateBoiler uniqueInstance = null;
	
	private ChocolateBoiler() {
		
	}
	
	public static ChocolateBoiler getInstance() {
		if(uniqueInstance == null) {
			synchronized (ChocolateBoiler.class) {
				if(uniqueInstance == null) {
					uniqueInstance = new ChocolateBoiler();
				}
			}
		}
		
		System.out.println("Returning instance of Chocolate Boiler");
		return uniqueInstance;
	}
	
	/**
	 *     
	 *     
	 */
	public void fill() {
		if (isEmpty()) {
			empty = false;
			boiled = false;
			// fill the boiler with a milk/chocolate mixture
		}
	}
 
	/**
	 *     
	 *              
	 */
	public void drain() {
		if (!isEmpty() && isBoiled()) {
			// drain the boiled milk and chocolate
			empty = true;
		}
	}
 
	/**
	 *     
	 *                    
	 */
	public void boil() {
		if (!isEmpty() && !isBoiled()) {
			// bring the contents to a boil
			boiled = true;
		}
	}
  
	public boolean isEmpty() {
		return empty;
	}
 
	public boolean isBoiled() {
		return boiled;
	}
}

package com.shma.singleton.chocolate;

public class ChocolateController {

	public static void main(String[] args) {
		ChocolateBoiler boiler = ChocolateBoiler.getInstance();
		
		//    
		boiler.fill();
		//  
		boiler.boil();
		//  
		boiler.drain();
		
		// will return the existing instance
		ChocolateBoiler boiler2 = ChocolateBoiler.getInstance();
	}
}

좋은 웹페이지 즐겨찾기