映射的运用

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

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

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

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

public class FileDataImp implements FileData
{

	@Override
	public void readUser() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public 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();
			//获得构造方法  FileDataImp
			
			Object o = c[0].newInstance();
			//调用第一个构造方法  生成FileDataImp对象
			
			FileData fileData = (FileData)o;
			//强制类型转换  子-->父  没有生成新对象  fileData存放还是之前对象的首地址
			
			fileData.readUser();
			//以父类身份调用子类重写的方法  FileDataImp的方法
		}  catch (Exception e) {
			e.printStackTrace();
		}
		
需要注意,实际上 构造函数的参数程序员B是不可以随意写的。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值