欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

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

服務定位器比如少見,這里提供一個一個簡單的服務定位器模式實現(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 簡單服務定位器模式實現(xiàn)的詳細內(nèi)容,更多關(guān)于Android 簡單服務定位器模式的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Android LaunchMode四種啟動模式詳細介紹

    Android LaunchMode四種啟動模式詳細介紹

    這篇文章主要介紹了Android LaunchMode四種啟動模式詳細介紹的相關(guān)資料,這里對launchmode的使用方法進行了詳解及啟動模式的比較,需要的朋友可以參考下
    2016-12-12
  • Jetpack?Compose入門基礎(chǔ)全面精講

    Jetpack?Compose入門基礎(chǔ)全面精講

    開始布局部分。這部分我個人感覺沒有必要每個組件、屬性都詳細說到,否則篇幅會很長。建立起Compose中的組件與?Android?Views的一個對應關(guān)系就夠了。具體還是需要在實際的使用中去熟悉
    2022-10-10
  • Android實現(xiàn)語音合成與識別功能

    Android實現(xiàn)語音合成與識別功能

    這篇文章主要為大家詳細介紹了Android實現(xiàn)語音合成與識別功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • Android刷新加載框架詳解

    Android刷新加載框架詳解

    這篇文章主要為大家詳細介紹了Android刷新加載框架的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • Flutter實現(xiàn)給圖片添加涂鴉功能

    Flutter實現(xiàn)給圖片添加涂鴉功能

    這篇文章主要介紹了利用Flutter實現(xiàn)給圖片添加涂鴉功能,文中通過代碼示例給大家講解的非常詳細,對大家的學習或工作有一定的幫助,需要的朋友可以參考下
    2024-01-01
  • Android 通過Intent使用Bundle傳遞對象詳細介紹

    Android 通過Intent使用Bundle傳遞對象詳細介紹

    這篇文章主要介紹了Android 通過Intent使用Bundle傳遞對象詳細介紹的相關(guān)資料,并附實例代碼講解,具有一定的參考價值,需要的朋友可以參考下
    2016-11-11
  • Android中button的onClick事件幾種方法

    Android中button的onClick事件幾種方法

    這篇文章主要介紹了Android中button的onClick事件幾種方法的相關(guān)資料,這里提供三種方法,實現(xiàn)監(jiān)聽事件,需要的朋友可以參考下
    2017-09-09
  • Android實現(xiàn)同頻共幀動畫效果

    Android實現(xiàn)同頻共幀動畫效果

    我們聽過“同頻共振”,其原理是多個物體物體以同樣的頻率振動,但是本篇實現(xiàn)的效果是“同頻共幀”,含義是:動畫以同樣的頻率和同樣的幀展示在多個不同View上,文中通過代碼示例介紹的非常詳細,感興趣的同學可以自己動手嘗試一下
    2024-01-01
  • 詳解android特性之CoordinatorLayout用法探析實例

    詳解android特性之CoordinatorLayout用法探析實例

    本篇文章主要介紹了android特性之CoordinatorLayout用法探析實例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02
  • Android7.0中關(guān)于ContentProvider組件詳解

    Android7.0中關(guān)于ContentProvider組件詳解

    本文描述了Android7.0中關(guān)于ContentProvider組件實現(xiàn)原理以及ContentProvider發(fā)布者和調(diào)用者這兩在Framework層是如何實現(xiàn)的。
    2017-11-11

最新評論