設計モードの-抽象工場-AbstractFactory


概要:特定のクラスを指定することなく、関連オブジェクトまたは相互依存オブジェクトを作成するインタフェースを提供します.
1.               、      。
2.                    。
3.                           。
4.          ,                。

 
package pack.java.IAnimalFactory;

/***
 *       ;
 * @author Administrator
 *
 */
public interface IAnimalFactory {
	/**
	 *      ;
	 * @return
	 */
	public ICat createCat();
	
	/**
	 *      ;
	 * @return
	 */
	public IDog createDog();
	
}

 
 
package pack.java.IAnimalFactory;

public interface ICat {
	/**
	 *        ;
	 */
	public void eat();
}

 
 
package pack.java.IAnimalFactory;

public interface IDog {
	/**
	 *        ;
	 */
	public void eat();
}

 
 
package pack.java.AbstractFactory;

import pack.java.AnimalModel.BlackCat;
import pack.java.AnimalModel.BlackDog;
import pack.java.IAnimalFactory.IAnimalFactory;
import pack.java.IAnimalFactory.ICat;
import pack.java.IAnimalFactory.IDog;
/**
 *         ;
 * @author Administrator
 *
 */
public class BlackAnimalFactory implements IAnimalFactory{
	/**
	 *       ;
	 */
	public ICat createCat() {
		// TODO Auto-generated method stub
		return new BlackCat();
	}

	/**
	 *      ;
	 */
	public IDog createDog() {
		// TODO Auto-generated method stub
		return new BlackDog();
	}

}

 
 
package pack.java.AbstractFactory;

import pack.java.AnimalModel.WhiteCat;
import pack.java.AnimalModel.WhiteDog;
import pack.java.IAnimalFactory.IAnimalFactory;
import pack.java.IAnimalFactory.ICat;
import pack.java.IAnimalFactory.IDog;

public class WhiteAnimalFactory implements IAnimalFactory{

	public ICat createCat() {
		// TODO Auto-generated method stub
		return new WhiteCat();
	}

	public IDog createDog() {
		// TODO Auto-generated method stub
		return new WhiteDog();
	}
	
}

 
 
package pack.java.AnimalModel;

import pack.java.IAnimalFactory.ICat;

public class BlackCat implements ICat{

	/***
	 *         ;
	 */
	public void eat() {
		// TODO Auto-generated method stub
		System.out.println("    ,      !");
	}

}

 
 
package pack.java.AnimalModel;

import pack.java.IAnimalFactory.IDog;

public class BlackDog implements IDog{

	/**
	 *         ;
	 */
	public void eat() {
		// TODO Auto-generated method stub
		System.out.println("    ,     !");
	}

}

 
 
package pack.java.AnimalModel;

import pack.java.IAnimalFactory.ICat;

public class WhiteCat implements ICat{

	public void eat() {
		// TODO Auto-generated method stub
		System.out.println("    ,    !");
	}

}

 
 
package pack.java.AnimalModel;

import pack.java.IAnimalFactory.IDog;

public class WhiteDog implements IDog{

	public void eat() {
		// TODO Auto-generated method stub
		System.out.println("    ,     !");
	}

}

 
 
package pack.java.testdemo;

import pack.java.AbstractFactory.BlackAnimalFactory;
import pack.java.AbstractFactory.WhiteAnimalFactory;
import pack.java.IAnimalFactory.IAnimalFactory;
import pack.java.IAnimalFactory.ICat;
import pack.java.IAnimalFactory.IDog;

/**
 *       ;
 * @author Administrator
 *
 */
public class TestAbstractFactory {

	/**
	 *    ;
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//            ,
		IAnimalFactory animalFactory = new  BlackAnimalFactory();
		
		//      ;
		ICat blackCat = animalFactory.createCat();
		
		//     ;
		blackCat.eat();
		
		//      ;
		IDog blackDog = animalFactory.createDog();
		
		//     ;
		blackDog.eat();
		
		System.out.println("");
		
		//           ;
		IAnimalFactory whiteAnimalFactory = new WhiteAnimalFactory();
		
		//      ;
		ICat whiteCat = whiteAnimalFactory.createCat();
		
		//        ;
		whiteCat.eat();
		
		//      ;
		IDog whiteDog = whiteAnimalFactory.createDog();
		
		//        ;
		whiteDog.eat();
		
	}
}

 
 
実行結果:
 
一匹の黒猫が、ネズミを捕まえています!黒い犬が骨をかじっている!
一匹の白猫が、魚を食べています!白い犬が、食べ物を食べています!