/**
* @author [email protected]
*/public inte***ce beanfactory
下面就是abstractbeanfactory類,它將實現上面的介面
/**
* @author [email protected]
*/public abstract class abstractbeanfactory implements beanfactory
@override
public void registerbeandefinition(string name, beandefinition beandefinition)
/*** 初始化bean
* @param beandefinition
* @return
*/protected abstract object docreatebean(beandefinition beandefinition);
}
應該注意到上面類中,docreatebean方法是抽象的,有待他的子類進行實現。這就是我們這一篇中標題所謂工廠方法的出處。我們將docreatebean延遲實現的原因是什麼?最後我們將分析原因。
下面的類繼承上面的
abstractbeanfactory,在這裡實現了docreatebean方法
/**
* @author [email protected]
*/public class autowirecapablebeanfactory extends abstractbeanfactory catch (instantiationexception e) catch (illegalacces***ception e)
return null;
}}
看過上面的三個類後,還有冰山的一角沒有揭開,就是
beandefinition ,這個在上面一直出現的類的具體實現
/**
* @author [email protected]
*/public class beandefinition
public void setbean(object bean)
public class getbeanclass()
public void setbeanclass(class beanclass)
public string getbeanclassname()
public void setbeanclassname(string beanclassname) catch (classnotfoundexception e)
} public object getbean()
}
到此,我們系列2的框架已經完成了,仔細看到這的同學已經可以使用上面的類實現bean的裝配和獲取。
首先:我們應該初始化
beandefinition ,因為它包裝了我們自己編寫,需要裝配的類。
其次:將beandefinition註冊到工廠中
最後:獲取bean,呼叫bean
下面是四個步驟的原始碼
public class beanfactorytest
}
當然,helloworldservice這乙個作為使用框架的人編寫的bean也不能被漏掉
/**
* @author [email protected]
*/public class helloworldservice
}
最後補充的是
registerbeandefinition方法的第乙個引數,根據它來獲取bean,我們使用spring時,配置檔案中bean的id就是這樣的功能。
至於docreatebean需要延遲實現,是因為我們將有多種例項化bean的方式,spring就有什麼根據xml和註解等方式。當然,其中又細分許多種,像構造器,set方法等。我們根據設計模式,將不同的實現封裝到不同的子類中。
android 核心系列
編譯 1,需要jre1.6,64bit的機器。2,錯誤 this attribute must be localized 提示了錯誤 this attribute must be localized 這種問題一般情況是因為在res xml資料夾下的中 或者在res layout下的檔案中出現了沒有多...
linux核心系列(2) linux核心鍊錶
因為高超的設計理念,linux核心中的鍊錶被很多人津津樂道。實際上,鍊錶本身只是核心提供的一組結構體 巨集定義和函式的集合,與linux核心本身沒有直接關係。核心鍊錶的設計思路已經在另一篇部落格中寫了,有興趣的同學可以去看一下,這裡是鏈結。今天,我們來看一下真實核心鍊錶的基本操作過程。我們的目標是做...
JS核心系列 原型物件
在js中,每當建立乙個函式物件f1 時,該物件中都會內建一些屬性,其中包括prototype和 proto prototype即原型物件。每乙個建構函式都有乙個與之相關聯的物件,該物件稱之為原型物件。每個例項物件都能共享其原型物件上的屬性和方法。原型物件的作用主要用來實現屬性的繼承,讓例項物件能共享...