反射和工厂模式
类和类的关系
- 实现 一个类实现一个借口
- 泛化 一个类继承另一个类
- 依赖 一个类是另一个类方法的局部变量,一个类是另一个类方法的返回类型,一个类是另一个类方法的参数
- 聚合 一个类是另一个类的属性,是整体和局部的关系
- 组合 一个类是另一个类的属性,是整体中不可分割的一部分属于强聚合
- 关联 依赖、聚合、组合、合称关联
反射
在编译器并不清楚应该加载那个类,类的加载是在运行期进行的,通过反射,可以对类进行加载,探知和自审
获取类模板
- 类名.class
- 对象.getclass()方法
- Class.forName(类的全路径)
反射
获取Dog类的属性(getFiekds()获取公共的属性,getDeclaredFields()获取所有属性包括私有属性)
Class class1 = Dog.class;
Field[] farry = class1.getDeclaredFields();
for (Field field : farry) {
System.out.println(field.getName());
}
获取该类模板的公有方法列表,包括继承的方法
Method[] methods = class1.getMethods();
for (Method method : methods) {
System.out.println(method.getName());
}
try {
//调用该方法反射一个该类对象
Object obj = class1.newInstance();
System.out.println(obj);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
工厂模式
将对象的创建和对象的使用分开进行