您的位置:首页 > 编程语言 > Java开发

Java—Generator模式,基于反射的工厂模式

2018-04-05 16:30 465 查看
public interface Generator<T> {
public T next();
}

public class AnimalGenerator implements Generator<Animal>{
//该生成器可以生成如下类型的对象
private Class[] type = new Class[]{Animal.class};
@Override
public Animal next() {
try {
//反射
return (Animal)type[0].newInstance();
} catch (InstantiationException | IllegalAccessException e) {
e.printStackTrace();
}
return null;
}
}

public class Animal {
String name;
int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
上例是Generator的一个实例,与普通工厂模式不同的是,Generator生成器不需要知道任何参数。也就是说,生成器无需额外的信息就知道如何创建新对象。这一点是利用反射机制实现的。
生成器里只定义了一个方法,即next()方法,用于产生新对象,在next()方法的实现中,通过反射机制得到要生成的对象的信息,同时也通过这种方式限制了生成器生成对象的类型。
测试如下: public static void main(String[] args) {
AnimalGenerator ag = new AnimalGenerator();
Animal a = ag.next();
a.setAge(1);
a.setName("ww");
System.out.println(a.getAge());
System.out.println(a.getName());
}输出:
1
ww
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: