上節我已經基本說明了耦合,以及在一些業務上是怎麼發生的,實際上我們要理解乙個思想,傳統的ejb開發模式,因為受到了很多很多的框架硬性約束,web容器的約束導致了**的可讀性,可移植和可擴充套件性變得不好,所以有這些解耦的思想,我們才會在03年spring的廣泛流行!
回顧上節末尾:我們是不是遺留了乙個問題,如果我們在工廠中,每次有乙個新的物件,我們就需要手動的加乙個對應的getbean方法,可重用性大大降低,所以我們稱下面的**,叫做
---------------------------簡單工廠------------------------------------
/**
* 定義乙個bean工廠,專門生產普通物件
*/public class beanfactory catch (ioexception e) }
public static userdao getbean(string key)catch(exception e) }
}那麼為了避免多個不同的物件在實際生產業務中,**的繁重,我們將這個簡單工廠,改造成通用工廠
/*** 定義乙個bean工廠,專門生產普通物件
*/public class beanfactory catch (ioexception e) }
// 來個物件就要在工廠建立乙個
// public static userdao getmysqlbean()
//// public static userdao getoraclebean()
// 來個物件就要在工廠建立乙個,冗餘**太多
// public static userdao getbean(string key)catch(exception e)
// }
/*** 通用工廠方法,不必要乙個新來物件就要建立乙個getbean
* @param key
* @return
*/public static object getbean(string key)catch(exception e)
return ret; }
}這樣的話,是不是我們只需要在配置檔案中這麼寫:
userdao=com.chenxin.gmall.user.demo.dao.userdaosqlserverimpl
userservice=com.chenxin.gmall.user.demo.service.userserviceimpl
在需要建立物件的地方,我們只需要強制轉換下:
userdao userdao = (userdao) beanfactory.getbean("userdao");
......
我們想在**生成乙個介面的實現類,只要你存在這個介面的實現,我們就可以定義在配置檔案中,然後在你需要生成的地方呼叫即可!
工廠模式實現解耦
1.首先建立乙個業務類service,在service中有乙個屬性dao,daoimpl是實現了dao介面的類 public class serviceimpl public inte ce dao 2.在建立乙個測試類 public class testmethod 3.我們發現這樣雖然完成業務但...
簡單工廠模式 XML解耦 反射
目錄 一 簡單工廠模式 二 簡單工廠模式角色 三 普通 例項 四 配置檔案 反射 五 uml圖 從字面意思看來就是要有乙個工廠類,那麼這個工廠類是幹什麼的呢?建立並返回乙個具體物件。應用場景如下 假如我們要做乙個計算器,它有很多個功能。加減乘除取餘乘方等,利用簡單工廠模式,我們要設計乙個計算類ope...
使用工廠模式解耦和IoC思想
使用工廠模式解耦。某一層功能需要改動,但其他層 不變 1.建立乙個beanfactory類,bean工廠service層 private mydao dao beanfactory.getbean class beanfactory 2.解決硬編碼問題,進一步優化解耦 解決硬編碼問題,進一步解耦 s...