映射的运用

来源:互联网 发布:数据库去掉重复行 编辑:程序博客网 时间:2024/05/09 06:02

假设有一个项目,是这样处理的:

1.项目经理A首先写了一个接口,并规定了需要实现的函数(可看作是一个模板,分配给员工去实现这些函数);

public interface FileData {public abstract void readUser();void writeUser();}

2.程序员B分配到的任务是写这个接口的实现类来实现这些函数;

public class FileDataImp implements FileData{@Overridepublic void readUser() {// TODO Auto-generated method stub}@Overridepublic void writeUser() {// TODO Auto-generated method stub}}

3.与此同时,项目经理继续写框架,并写了一个配置文件 test.properties ;

xx=FileDataImp

  注意,项目经理只需写上接口的名称“xx=”,具体的实现类名称由程序员B来写。

这样做的意义在于,项目经理不需要知道程序员B写的实现类是什么名称就可以顺利进行编写框架。

4.然后项目经理A开始了框架的编写;

ResourceBundle rb = ResourceBundle.getBundle("test");//加载配置文件String string = rb.getString("xx");//读取配置文件信息//string中间存放的值FileDataImp字符串try {Class clazz = Class.forName(string);//加载类Constructor c[] = clazz.getConstructors();//获得构造方法  FileDataImpObject o = c[0].newInstance();//调用第一个构造方法  生成FileDataImp对象FileData fileData = (FileData)o;//强制类型转换  子-->父  没有生成新对象  fileData存放还是之前对象的首地址fileData.readUser();//以父类身份调用子类重写的方法  FileDataImp的方法}  catch (Exception e) {e.printStackTrace();}
需要注意,实际上 构造函数的参数程序员B是不可以随意写的。



原创粉丝点击