JAvaファクトリモード(設計モード)


ファクトリメソッドの役割と目的は、オブジェクトの作成と使用を分離することです.
はっきり言って、ファクトリモードはデカップリングのために、オブジェクトの作成と使用のプロセスを分離します.
直接poコードを
/**
 *      
 */
public interface IGirl {
 
	//    
	public void washClothes();
 
	//   
	public void cook();
 
	//   
	public void dance();
 
	//   
	public void sing();
 
}
/**
 *
 *            
 */
public class Linwudi implements IGirl{
 
	@Override
	public void washClothes() {
		System.out.println("      ");
	}
 
	@Override
	public void cook() {
		System.out.println("     ");
		
	}
 
	@Override
	public void dance() {
		System.out.println("     ");
		
	}
 
	@Override
	public void sing() {
		System.out.println("     ");
		
	}
 
}
/**
 *
 *           
 */
public class Fengjie implements IGirl{
 
	@Override
	public void washClothes() {
		System.out.println("     ");
	}
 
	@Override
	public void cook() {
		System.out.println("    ");
		
	}
 
	@Override
	public void dance() {
		System.out.println("    ");
		
	}
 
	@Override
	public void sing() {
		System.out.println("    ");
		
	}
 
}
/**
 *
 *    
 */
public class GirlFactory {
	
	/**
	 *           (       ) ,         (        )
	 *                       (             ,            )
	 */
	public static IGirl factory(int type) {
		IGirl girl = null;
		switch (type) {
		case 1:
			girl = new Linwudi();
			break;
		case 2:
			girl = new Fengjie();
			break;
		default:
			throw new IllegalArgumentException("    ,         ");
		}
		return girl;
	}
 
}
/**
 *     
 */
public class Zhouxingxing {
	
	/**
	 *      
	 * (              ,         ,     , 
	 *             ,                                    
	 *        ,                  。)
	 *                       (             ,            )
	 * 
	 */
	public void life() {
		//   ,       ,          ,            
		IGirl girl = GirlFactory.factory(2);
		
		girl.cook();
		girl.dance();
		girl.washClothes();
		girl.sing();
	}
 
}
/**
*    
*/
public class TestZhouxingxing {
 
	public static void main(String[] args) {
		Zhouxingxing zhouxingxing = new Zhouxingxing();
		zhouxingxing.life();
	}
 
}