我們調用一個類的方法,首先是User user=new User(),對象調用這個方法,user.add(),這種方法有一個缺陷就是代碼的耦合度太高,比如你的servlet調用User類里的方法,需要在servlet中new User()對象,如果類名發生改變,需要變動的地方就多了。
后來人們想到用工廠模式解耦合,首先建一個工廠類,工廠類有一個返回UserService的方法,比如說你的servlet中要調用service方法時就可以用UserService s=Factory.getService();,但是這樣又有一個問題就是servlet和工廠類耦合了。開發有一種思想就是高內聚,低耦合,也就是說在一個類中要緊密相連,在不同的類最好不要關聯的緊密。
IOC原理
控制反轉
現在有兩個類,UserService和UserServlet,我現在要在UserServlet中得到UserService的對象,原始的方法就是new創建一個UserService對象,我們現在用Spring可以這么來做,
第一步:創建一個xml配置文件,配置要創建的對象類,<bean id="userService" class="com.UserService">
第二步:創建工廠類,使用dom4j解析配置文件+反射
工廠類有個返回userService的方法,這個方法中
1 使用dom4j解析xml文件,根據id值userService得到id值對象class屬性值,也就是類的屬性
2 使用反射創建類對象
Class clazz=Class.forName(classValue);
UserService service=clazz.newInstance();
return service;
這時在userServlet中調用userService的方法就是UaserFactory.getService();這樣你的userService改變的話就只需要在配置文件中修改就可以了,降低了類的耦合度。