上一篇博客中总结了怎样读取对象,这篇博客总结一下怎样创建对象。
在Spring.net容器中创建对象,可以根据在配置文件或者xml文件中定义的type属性去定义相应类型,这种方式是通过构造器创建对象;另外容器也可以调用工厂方法创建对象,这时type属性中就应该写明工厂创建对象的方法。
总结一下创建对象的方式:1.构造器创建对象。2.工厂创建对象。
1.构造器创建对象。
使用构造器创建对象时,并不要求必须是某种特定的类型,也不需要了解它的实现方式,只要指明类型即可。
<object id="StudentInfo" type="CreateObjects.StudentInfo, CreateObjects" />
2.工厂创建对象。
静态工厂
在使用静态工厂创建对象时,将对象定义的的type属性设为包含静态工厂,并且要设置factory-method的属性来指定静态工厂的方法。
<object id="staticObjectsFactory" type="CreateObjects.StaticObjectsFactory, CreateObjects" factory-method="CreateInstance"/>
实例工厂
通过实例工厂方法创建对象,对象定义就不能包含type属性,而要用factory-object属性引用工厂方法所在的对象;注意,该属性值必须是包含工厂方法的对象的名称,且该对象必须定义在当前容器或父容器中。工厂方法的方法名则通过factory-method属性指定。
<!--实例工厂-->
<object id="instanceObjectsFactory" type="CreateObjects.InstanceObjectsFactory, CreateObjects" /><!--工厂-->
<object id="instanceStudentInfo" factory-method="CreateInstance" factory-object="instanceObjectsFactory" /> <!--创建的对象-->
注意:type属性的格式:类型的全名,然后是一个逗号,最后是类型所在的程序集名称。
总结:
两种创建对象方式,构造器创建简单直接,不需要了解它的实现方式;而工厂创建我更认为是构造器创建对象的一种拓展,只不过创建的工厂对象,让工厂进一步去创建我们需要的东西。