简单工厂模式:
.目的
工厂模式就是专门负责将大量有共同接口的类实例化,而且不必事先知道每次是要实例化哪一个类的模式。它定义一个用于创建对象的接口,由子类决定实例化哪一个类。
我现在要做一个动物园管理系统。
首先抽象一个animal接口:
package factory.simpleFactory;
/**
*
* @author Administrator
*/
public interface Animal {
void eat();
}
然后创建实现了animal接口的具体实现类:
1 Tiger 类
package factory.simpleFactory;
/**
*
* @author Administrator
*/
public class Tiger implements Animal{
public void eat() {
System.out.println("老虎会吃");
}
public void run(){
System.out.println("老虎会跑");
}
}
2 haitui类:
package factory.simpleFactory;
/**
*
* @author Administrator
*/
public class Haitun implements Animal{
public void eat() {
System.out.println("海豚会吃");
}
public void swming(){
System.out.println("海豚会游泳");
}
}
3 yingwu类
package factory.simpleFactory;
/**
*
* @author Administrator
*/
public class Yingwu implements Animal {
public void eat() {
System.out.println("鹦鹉会吃");
}
public void flay() {
System.out.println("鹦鹉会飞");
}
}
然后我要创建一个animal的工厂类。该工厂类根据传入的参数生成具体的animal子类实例。其中用到反射机制。
public class AnimalFactory {
public Animal newAnimal(String name) {
Animal animal = null;
try {
animal = (Animal) (Class.forName(name).newInstance());
} catch (Exception ex) {
Logger.getLogger(AnimalFactory.class.getName()).log(Level.SEVERE, null, ex);
}
return animal;
}
}
好了,现在我们就可以来使用他们了。测试代码传上::
public class TestAnimal {
public static void main(String[] args) {
AnimalFactory af = new AnimalFactory();
Animal tiger = af.newAnimal("factory.simpleFactory.Tiger");
tiger.eat();
Animal haitun = af.newAnimal("factory.simpleFactory.Haitun");
haitun.eat();
Animal yingwu = af.newAnimal("factory.simpleFactory.Yingwu");
yingwu.eat();
}
}
输出:
老虎会吃
海豚会吃
鹦鹉会吃
这就是简单工厂模式。用来大批量生产animal。
注意:如果要生产的实例又分好多种情况。如 tiger老虎又分为华南虎,华北虎等。怎么办。这时简单工厂模式就不能满足要求了。
要想解决这个问题。请看 【工厂方法模式】