設計モードの-抽象工場-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();
}
}
実行結果:
一匹の黒猫が、ネズミを捕まえています!黒い犬が骨をかじっている!
一匹の白猫が、魚を食べています!白い犬が、食べ物を食べています!