返回顶部
首页 > 资讯 > 移动开发 >Android 简单服务定位器模式实现
  • 947
分享到

Android 简单服务定位器模式实现

2024-04-02 19:04:59 947人浏览 安东尼
摘要

目录引入api使用依赖注入(Dependency Injection)和服务定位器(Service Locator)是实现控制反转(Inversion of Control)的两种主

依赖注入(Dependency Injection)和服务定位器(Service Locator)是实现控制反转(Inversion of Control)的两种主要手段。

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

这些依赖注入框架都感觉比较重。

服务定位器比如少见,这里提供一个一个简单的服务定位器模式实现。

引入

项目地址: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都会产生新实例


class SomeService {
  fun doSomething() {
  }
}

// 注册 
factory {
  SomeService()
}

// 获取,每次resolve都会产生新实例
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 是使用同一工厂产生的不同实例
// A1 与 B1 是使用不同工厂产生的不同实例
val serviceA1 = resolve<NamedService>("a")
val serviceA2 = resolve<NamedService>("a")
val serviceB1 = resolve<NamedService>("b")
val serviceB2 = resolve<NamedService>("b")

以上就是Android 简单服务定位器模式实现的详细内容,更多关于Android 简单服务定位器模式的资料请关注编程网其它相关文章!

--结束END--

本文标题: Android 简单服务定位器模式实现

本文链接: https://lsjlt.com/news/122453.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Android 简单服务定位器模式实现
    目录引入API使用依赖注入(Dependency Injection)和服务定位器(Service Locator)是实现控制反转(Inversion of Control)的两种主...
    99+
    2024-04-02
  • Android中实现GPS定位的简单例子
    今天弄了一个多小时,写了一个GPS获取地理位置代码的小例子,包括参考了网上的一些代码,并且对代码进行了一些修改,希望对大家的帮助。具体代码如下:  要实用Adnroi...
    99+
    2022-06-06
    gps定位 gps Android
  • Android如何实现模拟定位
    目录一、Android模拟权限开启配置 1)Android 6.0以下开启模拟定位开关2)Android 6.0以上代码配置选择模拟定位的应用 二、Android模拟定位实现 1)模...
    99+
    2024-04-02
  • C#实现简单工厂模式
    情景:有一个怪兽,HP是100,现在勇士有可以使用武器将其打败,有三种武器,木剑每次打击20血,铁剑每次50血,金刚剑每次100血,如果想要使用简单工厂方式,怎么设计? 一.啥是简单...
    99+
    2024-04-02
  • Android实现简单的自定义ViewGroup流式布局
    目录前言一、基本的测量与布局二、流式的布局的layout三、流式的布局的Measure后记前言 前面几篇我们简单的复习了一下自定义 View 的测量与绘制,并且回顾了常见的一些事件的...
    99+
    2022-12-09
    Android自定义ViewGroup流式布局 Android ViewGroup流式布局 Android ViewGroup 布局
  • 怎么在Android中实现服务定位器
    本篇文章为大家展示了怎么在Android中实现服务定位器,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。引入repositories {   maven&nbs...
    99+
    2023-06-14
  • Android简单实现自定义流式布局的方法
    本文实例讲述了Android简单实现自定义流式布局的方法。分享给大家供大家参考,具体如下: 首先来看一下 手淘HD - 商品详情 - 选择商品属性 页面的UI 商品有很多尺码...
    99+
    2022-06-06
    自定义 流式布局 方法 布局 Android
  • Android如何实现单例模式
    这篇文章主要介绍了Android如何实现单例模式,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一.饿汉式public class SingletionSt...
    99+
    2023-06-15
  • android单例模式怎么实现
    在Android中,可以通过以下几种方式实现单例模式:1. 懒汉式```javapublic class Singleton {pr...
    99+
    2023-08-23
    android
  • Android实现简单计算器
    本文实例为大家分享了Android实现简单计算器的具体代码,供大家参考,具体内容如下 功能 1、加减乘除四则运算 2、归0 3、回退 4、即时运算 配置 在build.gradle...
    99+
    2024-04-02
  • Android简单实现自定义弹框(PopupWindow)
    一:一般都是先上效果图 二:实现步骤: 1.xml布局实现 <?xml version="1.0" encoding="utf-8"?> &...
    99+
    2022-06-06
    自定义 popupwindow Android
  • Android自定义dialog简单实现方法
    本文实例讲述了Android自定义dialog简单实现方法。分享给大家供大家参考,具体如下: @Override protected void onCreate(Bundl...
    99+
    2022-06-06
    方法 dialog Android
  • Android Studio简单实现自定义日历
    本文实例为大家分享了Android Studio自定义日历的具体代码,供大家参考,具体内容如下 效果图: 目录树 1.DayBean.java用来存储每天的信息 package ...
    99+
    2024-04-02
  • Java简单实现定时器
    本文实例为大家分享了Java简单实现定时器的具体代码,供大家参考,具体内容如下 一、定时器 定时器相当于一个任务管理器。有些任务可能现在执行, 有些任务可能过1个小时,甚至很久才会执...
    99+
    2024-04-02
  • C#如何实现简单工厂模式
    这篇文章主要介绍“C#如何实现简单工厂模式”,在日常操作中,相信很多人在C#如何实现简单工厂模式问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C#如何实现简单工厂模式”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-07-02
  • java简单工厂模式怎么实现
    在Java中,简单工厂模式可以通过以下步骤实现:1. 首先创建一个接口,表示产品的抽象类,其中定义了产品的一些共同的方法。```ja...
    99+
    2023-08-18
    java
  • Android 实现夜间模式的快速简单方法实例详解
    ChangeMode 项目地址:ChangeMode Implementation of night mode for Android. 用最简单的方式实现夜间模式,支持Lis...
    99+
    2022-06-06
    方法 Android
  • Android 模拟地图定位功能的实现
    实现原理: 手机定位方式目前有4种: 基站定位WIFI定位GPS定位AGPS定位 本工程利用手机自带的"模拟位置"功能实现运行时修改LocationManager...
    99+
    2024-04-02
  • Android 单例模式的四种实现方式
    目录一.饿汉式二.懒汉式三.双重检查加锁方式四.静态内部类方式总结一.饿汉式 public class SingletionStarving { private sta...
    99+
    2024-04-02
  • Android studio实现简单计算器
    本文实例为大家分享了Android studio实现简单计算器的具体代码,供大家参考,具体内容如下 需求分析 在Android studio中设计并实现一个简单的计算器,实现连...
    99+
    2022-06-06
    Android Studio studio Android
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作