最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android 簡單服務(wù)定位器模式實(shí)現(xiàn)

 更新時間:2021年03月27日 09:33:49   作者:ezy  
這篇文章主要介紹了Android 簡單服務(wù)定位器模式實(shí)現(xiàn),幫助大家更好的理解和學(xué)習(xí)使用Android,感興趣的朋友可以了解下

依賴注入(Dependency Injection)和服務(wù)定位器(Service Locator)是實(shí)現(xiàn)控制反轉(zhuǎn)(Inversion of Control)的兩種主要手段。

Android的主流依賴注入框架有:Dagger 和 Kion

這些依賴注入框架都感覺比較重。

服務(wù)定位器比如少見,這里提供一個一個簡單的服務(wù)定位器模式實(shí)現(xiàn)。

引入

項目地址:github.com/czy1121/ser…

repositories { 
  maven { url "https://gitee.com/ezy/repo/raw/android_public/"}
} 
dependencies {
  implementation "me.reezy.jetpack:servicelocator:0.4.0" 
}

API

// 獲取實(shí)例
inline fun <reified T> resolve(name: String = T::class.java.name): T?
// 注冊為單例
inline fun <reified T> singleton(name: String = T::class.java.name, crossinline block: () -> T)
// 注冊為工廠
inline fun <reified T> factory(name: String = T::class.java.name, crossinline block: () -> T)

使用

單例,每次resolve獲得的都是同一實(shí)例

class SomeService {
  fun doSomething() {
  }
}

// 注冊 
singleton {
  SomeService()
}

// 獲取
val service = resolve<SomeService>() 

具名單例

class NamedService(val name: String) {
  fun doSomething() {
  }
}

// 注冊 
singleton("a") {
  NamedService("aaa")
}
singleton("b") {
  NamedService("bbb")
}

// 獲取 
val serviceA = resolve<NamedService>("a")
val serviceB = resolve<NamedService>("b")

工廠,每次resolve都會產(chǎn)生新實(shí)例

class SomeService {
  fun doSomething() {
  }
}

// 注冊 
factory {
  SomeService()
}

// 獲取,每次resolve都會產(chǎn)生新實(shí)例
val service1 = resolve<SomeService>() 
val service2 = resolve<SomeService>() 

具名工廠

class NamedService(val name: String) {
  fun doSomething() {
  }
}

// 注冊 
factory("a") {
  NamedService("aaa")
}
factory("b") {
  NamedService("bbb")
}

// 獲取
// A1 與 A2 是使用同一工廠產(chǎn)生的不同實(shí)例
// A1 與 B1 是使用不同工廠產(chǎn)生的不同實(shí)例
val serviceA1 = resolve<NamedService>("a")
val serviceA2 = resolve<NamedService>("a")
val serviceB1 = resolve<NamedService>("b")
val serviceB2 = resolve<NamedService>("b")

以上就是Android 簡單服務(wù)定位器模式實(shí)現(xiàn)的詳細(xì)內(nèi)容,更多關(guān)于Android 簡單服務(wù)定位器模式的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論

资源县| 无极县| 大邑县| 区。| 古交市| 敦化市| 淳化县| 惠东县| 民县| 喜德县| 时尚| 西乌珠穆沁旗| 丰宁| 密山市| 疏附县| 湖北省| 临湘市| 尼勒克县| 监利县| 秭归县| 临夏市| 革吉县| 南充市| 南宫市| 内黄县| 湘西| 青州市| 遵化市| 太湖县| 泰安市| 汝阳县| 长治县| 广饶县| 肇源县| 辽阳县| 淮北市| 澄迈县| 遵义市| 卫辉市| 达日县| 溧阳市|