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