热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

子组件与组件依赖性

如何解决《子组件与组件依赖性》经验,为你挑选了1个好方法。

我从此文档https://google.github.io/dagger/api/latest/dagger/Component.html中读取了它们之间的区别,SubComponents并且也阅读了此线程Dagger 2子组件与组件依赖关系Component Dependencies

有人可以帮我举例说明这句话的意思。

子组件可以使用由其祖先组件和子组件定义的任何绑定。作为替代,组件可以通过声明组件依赖性来仅使用来自另一个组件接口的绑定。将类型用作组件依赖项时,依赖项上的每个提供方法都将绑定为提供程序。请注意,只有暴露为供应方法的绑定才可以通过组件依赖项获得。

David Medenj.. 7

可以将其视为类似于java的子组件SubComponent extends ParentComponent,其中所有组件都位于其中protected。它可以访问与父级相同的成员,并且只能使用父级的所有内容。

另一方面,组件依赖项就像一个委托对象,在这里您只能访问该类公开的公共方法。


让我们假设Dagger可以创建和提供2个类。不管是什么。不管您使用构造函数注入还是从模块创建对象都没有关系...我们仅假设我们拥有some可以提供的那两个类,BaseComponent我将在下面显示。

// some module can create either object
class ComponentPrivateObject {}
class ExposedObject {}

它们来自哪里都无所谓。下一部分是有趣的部分。我们在组件接口的方法上将这些类之一声明为返回类型。这就是Dagger所谓的Provision方法。它说该组件可以提供该类。

@Component(modules=/* some modules */)
class BaseComponent {

  // BaseComponent can provide ExposedObject!
  ExposedObject exposedObject();

}

子组件和依赖组件之间的区别在于,就像开始时的Java示例一样,它们Subcomponent将可以访问这两个组件,ComponentPrivateObject并且ExposedObject因为它只是扩展了父图。

// can use either class, it just adds to the parent
@Subcomponent
class Subcomponent {}

另一方面,DependentComponent只能访问ExposedObject。它不会扩展的图形BaseComponent,而只是BaseComponent作为某些对象的提供者进行绑定。就像上面的Java示例一样,它就像使用其公共API,如果您尝试使用ComponentPrivateObjectDagger,则会告诉您无法提供它。

// binds component dependency as provider
@Component(dependency=BaseComponent.class)
class DependentComponent{}

一个扩展父级,另一个使用其公共API。



1> David Medenj..:

可以将其视为类似于java的子组件SubComponent extends ParentComponent,其中所有组件都位于其中protected。它可以访问与父级相同的成员,并且只能使用父级的所有内容。

另一方面,组件依赖项就像一个委托对象,在这里您只能访问该类公开的公共方法。


让我们假设Dagger可以创建和提供2个类。不管是什么。不管您使用构造函数注入还是从模块创建对象都没有关系...我们仅假设我们拥有some可以提供的那两个类,BaseComponent我将在下面显示。

// some module can create either object
class ComponentPrivateObject {}
class ExposedObject {}

它们来自哪里都无所谓。下一部分是有趣的部分。我们在组件接口的方法上将这些类之一声明为返回类型。这就是Dagger所谓的Provision方法。它说该组件可以提供该类。

@Component(modules=/* some modules */)
class BaseComponent {

  // BaseComponent can provide ExposedObject!
  ExposedObject exposedObject();

}

子组件和依赖组件之间的区别在于,就像开始时的Java示例一样,它们Subcomponent将可以访问这两个组件,ComponentPrivateObject并且ExposedObject因为它只是扩展了父图。

// can use either class, it just adds to the parent
@Subcomponent
class Subcomponent {}

另一方面,DependentComponent只能访问ExposedObject。它不会扩展的图形BaseComponent,而只是BaseComponent作为某些对象的提供者进行绑定。就像上面的Java示例一样,它就像使用其公共API,如果您尝试使用ComponentPrivateObjectDagger,则会告诉您无法提供它。

// binds component dependency as provider
@Component(dependency=BaseComponent.class)
class DependentComponent{}

一个扩展父级,另一个使用其公共API。


请不要“将其视为像Java SubComponent这样的子组件扩展了ParentComponent”。组件和子组件之间没有继承关系。而是将它们视为内部类(它们是通过这种方式实现的),因为您可以从封闭的组件访问所有内容。
推荐阅读
  • #前言AndroidArchitectureComponents是谷歌在GoogleIO2017发布的。官方的描述:https:developer.android.google.c ... [详细]
  • 本文整理了Java中javax.lang.model.util.Types.getNullType()方法的一些代码示例,展示了Types.getNullT ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 特殊字符转义表字符十进制转义字符"&&不断开空格(non-breakingspace)最常用的转义字符列表显示说明实体名称十进制编号半方大的空 ... [详细]
  • EPICS Archiver Appliance存储waveform记录的尝试及资源需求分析
    本文介绍了EPICS Archiver Appliance存储waveform记录的尝试过程,并分析了其所需的资源容量。通过解决错误提示和调整内存大小,成功存储了波形数据。然后,讨论了储存环逐束团信号的意义,以及通过记录多圈的束团信号进行参数分析的可能性。波形数据的存储需求巨大,每天需要近250G,一年需要90T。然而,储存环逐束团信号具有重要意义,可以揭示出每个束团的纵向振荡频率和模式。 ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • 使用在线工具jsonschema2pojo根据json生成java对象
    本文介绍了使用在线工具jsonschema2pojo根据json生成java对象的方法。通过该工具,用户只需将json字符串复制到输入框中,即可自动将其转换成java对象。该工具还能解析列表式的json数据,并将嵌套在内层的对象也解析出来。本文以请求github的api为例,展示了使用该工具的步骤和效果。 ... [详细]
  • Google Play推出全新的应用内评价API,帮助开发者获取更多优质用户反馈。用户每天在Google Play上发表数百万条评论,这有助于开发者了解用户喜好和改进需求。开发者可以选择在适当的时间请求用户撰写评论,以获得全面而有用的反馈。全新应用内评价功能让用户无需返回应用详情页面即可发表评论,提升用户体验。 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • 写了一个签到类应用,不只是Flutter哦,拥有一个自己的App是一件很酷的事~能解决用户需求的技术,都是好技术。作为一个程 ... [详细]
  • 开发笔记:Dagger2 探索记3——两大进阶组件
        今天要讲的时@Scope这个组件。为什么说它是进阶组件,就是因为它基本上没作用,但在理解了基本组件之后又必须用到。 ... [详细]
author-avatar
美甲控Alily
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有