说到工厂模式大家可能就会想到构造器 例如动物 动物里面又分为 猴子 、猫、或者老虎 但是他们有共同的行为例如 吃东西 行走等 但是我们有工厂里面包括很多生产动物的方法
例如动物工厂 这里使用了Java反射 通过 另外类型使用了泛型T 表示工厂可以生出任何动物 只要继承Animal类
pulic abstract class AnimalFactory{
public abstract <T extends Animal> T createAnimal(Class<T> clz);
}
下面是动物类
public abstract class Animal {
//吃东西
public abstract void eatThing();
//爬行
public abstract void crawl();
}
动物的子类
public class Monkey extends Animal{
@override
public void eatThing()
{
System.out.println("猴子喜欢吃香蕉");
}
@override
public void crawl(){
System.out.println("猴子喜欢攀爬");
}
猫跟老虎我就不写了都一样
动物种类工厂继承于动物工厂
public abstract class AnimalKindFactory extends AnimalFactory{
public abstract <T extends Animal> T createAnimal(Class<T> clz>
{
try{
Animal animal=null;
animal=(Aninmal)Class.forName(clz.getName()).newInstacne();
}catch(Exception e)
{
e.printStackTrace();
}
return (T)animal;
}
测试动物类
public class TestAnimal{
public static void main(String[] args){
AnimalFactory animalFactory=new AnimalKindFactory();
Animal monkey=animalFactory.createAnimal(Monkey.class);
monkey.eatThing();
monkey.crawl();
Cat cat=animalFactory.createAnimal(Cat.class);
cat.eatThing();
cat..crawl();
}
}
最后打印结果
猴子喜欢吃香蕉
猴子喜欢攀爬
到这里简单的工厂模式就写完了 后面补上UML图!