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
相关文章推荐
- 基于java的设计模式(3)工厂
- java 反射和 工厂模式结合使用
- [转] Java的反射机制+工厂模式
- java基础第九讲——反射、工厂设计模式、注解、线程、网络与线程的结合
- java:运用工厂模式+反射实现可插拔的程序
- Java工厂模式与反射机制、外部配置相结合
- Java 反射之工厂模式
- java 计算器基于工厂模式和功能单一模式
- java反射应用于工厂模式
- Java 反射实例化对象(修改工厂模式)
- [零基础学JAVA]Java SE应用部分-36.反射机制与工厂设计模式 推荐
- java内省机制与反射实现工厂模式
- 工厂模式实现方式、使用场景(包括基于反射的简单工厂模式)
- 基于C#反射机制的工厂模式
- Java设计模式之工厂模式(利用反射实现)
- 结合属性文件的工厂模式(java反射的应用)
- Java学习笔记----工厂模式和反射
- Java基础之反射及动态代理,反射实现工厂模式
- java 反射解析,将反射用于工厂模式【实例】
- [Java 15 反射机制 ] 工厂模式与 properties 读取配置文件