為什麼工廠模式可以解耦?下篇

2021-10-19 13:38:37 字數 1493 閱讀 2299

上節我已經基本說明了耦合,以及在一些業務上是怎麼發生的,實際上我們要理解乙個思想,傳統的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...