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

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

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

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

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

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

服務(wù)定位器比如少見,這里提供一個一個簡單的服務(wù)定位器模式實現(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

// 獲取實例
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獲得的都是同一實例

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)生新實例

class SomeService {
  fun doSomething() {
  }
}

// 注冊 
factory {
  SomeService()
}

// 獲取,每次resolve都會產(chǎn)生新實例
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)生的不同實例
// A1 與 B1 是使用不同工廠產(chǎn)生的不同實例
val serviceA1 = resolve<NamedService>("a")
val serviceA2 = resolve<NamedService>("a")
val serviceB1 = resolve<NamedService>("b")
val serviceB2 = resolve<NamedService>("b")

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

相關(guān)文章

最新評論

梨树县| 民乐县| 三门峡市| 阳曲县| 皮山县| 巩义市| 临海市| 甘孜| 曲阜市| 昭苏县| 姜堰市| 唐海县| 磐安县| 吐鲁番市| 梁河县| 武穴市| 岑溪市| 乐业县| 威信县| 巧家县| 兴安县| 盐亭县| 墨竹工卡县| 关岭| 荔波县| 清镇市| 磐安县| 柞水县| 邹平县| 崇义县| 根河市| 视频| 凤冈县| 商都县| 兴文县| 辉县市| 嫩江县| 旬邑县| 安平县| 青河县| 扎兰屯市|