概述:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
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();
}
}
运行结果:
一只黑猫,正在捕捉老鼠!
一条黑狗,正在啃骨头!
一只白猫,正在吃鱼!
一条白狗,正在吃东西!