標籤:style java color 使用 檔案 art
IOC(Inversion of Control,控制反轉):所謂控制反轉,就是將執行個體化對象的權利交給Spring容器 .另外一點,Spring主張面向介面編程,這樣就是一種松耦合性編程體現.
假設現在有Profession這樣一個介面,在其下可以有Programmer,Art,Marketing等等一系列的實作類別. 如果現在一個Service當中對其進行引用而且不用這種控制反轉的思想的話:
class Service {
Profession p=new Programmer();
}
這樣一個這樣的Profession只能接收一個具體的實現. 這樣的話這個Service就對這個具體的Programmer產生了強烈的依賴性,如果後期我要用到另一個實現Marketing時,這是只能更改代碼.如果使用了控制反轉的話:
class Service {
Profession p;
}
僅僅這樣就夠了,剩下的對象的執行個體化和對象關係的確定,都是由Spring容器進行管理的.這樣就減小了類與類之間的耦合度 . 具體的做法就是在xml檔案對這種關係進行配置.對於bean的配置用的是標籤<bean>,對於簡單的屬性用的是<property>.
<bean id="pro1" class="feijishuo.test.ioc.Programmer">
<property name="instrument" value="computer" />
</bean>
這樣就配置了一個具有一台電腦的一個程式員.
這名程式要在一個平台上才能展現自己,因此將其放到Service平台上讓其盡情的施展自己的才能.一個Bean對另一個Bean進行引用用ref.
<bean id="service" class="feijishuo.test.ioc.Service">
<property name="company" value="Game Company" />
<property name="pro1" ref="pro1" />
</bean>
對於一個遊戲公司而言不可能只有程式員,還得有Art,Marketing等等. Spring在裝配集合類型時提供了list,set,map,props .
<list>和<set>當屬性是array或者是一些java.util.Collection時候非常有用.
<map>和<props>,對應的是java.util.Map和java.util.Properties. 兩者唯一的不同就是<props>要求索引值都是String.<map>則沒有要求.
<bean id="service" class="feijishuo.test.ioc.Service">
<property name="company" value="Game Company" />
<list>
<ref bean="art" />
<ref bean="programmer" />
<ref bean="marketing" />
</list>
</bean>
現在對這個遊戲公司的各個部門進行介紹:
<bean id="service" class="feijishuo.test.ioc.Service">
<property name="company" value="Game Company" />
<map>
<entry key="program" value-ref="click" />
<entry key="art" value-ref="pic" />
<entry key="market" value-ref="talk" />
</map>
</bean>