由Spring引出的一些瞎想(2)
之前利用List<List>进行创建实例,主要存在的问题是要求各个类的属性的个数必须一致。
为了能够可以不受这个限制,考虑用Map来存放XML中的配置信息
因为要创建XML中配置的所有的对象,所以还是用List来储存,不同的的是List<Map>,用map来储存创建实例所需要的全部信息。每个map除了需要有创建实例所需要的属性以外,还要有该类的全类名。这个全类名也从XML中获取。
同样,在各个类中也需要重新创建构造方法,接收一个Map<String,String>来创建实例对象。
有了这个构造方法后,BeanFactory类就可以接收一个Map<String,String>来创建Bean。
然后就可以得到在XML文件中所创建的所有对象的实例
梳理一下整个过程:
1.DocumentParse类,负责解析XML文件,得到一个List<Map>,Map<String,String>储存要创建的对象的全类名,和属性的赋值。
2.BeanFactory类,负责接收一个Map<String,String>,根据得到的内容创建Object
存在的问题:
虽然可以根据具体的类创建对象,但是依然要求每个类提供构造方法。