国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

依賴注入 理解Dependency Injection

2019-11-08 00:30:22
字體:
來源:轉載
供稿:網友

參考: 控制反轉 wiki 依賴注入參考1,能極大促進理解 依賴注入參考2

定義:

In software engineering, dependency injection is a software design pattern that implements inversion of control for resolving dependencies. Inversion of Control(IOC):控制反轉。 是面向對象編程中的一種設計原則,可以用來減低計算機代碼之間的耦合度。 其中最常見的方式叫做依賴注入(Dependency Injection,簡稱DI),還有一種方式叫“依賴查找”(Dependency Lookup)。通過控制反轉,對象在被創建的時候,由一個調控系統內所有對象的外界實體,將其所依賴的對象的引用傳遞給它。也可以說,依賴被注入到對象中。

Dependency: ClassA 中 含有 ClassB 的實例,就稱ClassA對ClassB有一個依賴。

Dependency Injection: 直接在構造函數初始化是一種Hard init方式。可以在外部實例化ClassB后,傳入ClassA中構造依賴關系。這種非自己主動初始化依賴,而通過外部來傳入依賴的方式,就稱為依賴注入

硬初始化(hard init):這種在MovieLister中創建MovieFinderImpl的方式,使得MovieLister不僅僅依賴于MovieFinder這個接口,它還依賴于MovieListImpl這個實現。 這種在一個類中直接創建另一個類的對象的代碼,和硬編碼(hard-coded strings)以及硬編碼的數字(magic numbers)一樣,是一種導致耦合的壞味道,我們可以把這種壞味道稱為硬初始化。

依賴注入的實現方式:

構造函數注入(Construction Injection)public class MovieLister { PRivate MovieFinder finder; public MovieLister(MovieFinder finder) { this.finder = finder; }}setter注入public class MovieLister { public void setFinder(MovieFinder finder) { this.finder = finder; }}接口注入(不明白怎么注入的)//1.首先要創建一個注入使用的接口。public interface InjectFinder { void injectFinder(MovieFinder finder);}//2.我們讓MovieLister實現這個接口。class MovieLister implements InjectFinder { public void injectFinder(MovieFinder finder) { this.finder = finder; }}//3.我們需要根據不同的框架創建被依賴的MovieFinder的實現
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 惠安县| 东丽区| 黑水县| 新安县| 金湖县| 新干县| 奇台县| 肇州县| 丰都县| 大兴区| 茶陵县| 博罗县| 镇康县| 芦山县| 永兴县| 新建县| 仁布县| 南阳市| 天柱县| 三江| 浦城县| 东丽区| 星子县| 璧山县| 旬邑县| 类乌齐县| 南宫市| 阿拉善盟| 南平市| 安西县| 独山县| 东海县| 曲松县| 巢湖市| 华亭县| 安顺市| 石嘴山市| 吉林市| 满城县| 尖扎县| 喀什市|