自我引用
发布时间
阅读量:
阅读量
定义
属性可以允许嵌入其继承自另一个类型的类。
但是当一个类声明使用了自定义特性和自我类型(self type)时(this: ClassName =>),这种特性仅能嵌入到本类型所指定的子类中。
如果试图将该特性嵌入到不满足本类型的子类,则会引发错误。
在技术层面而言, 自身类型指的是在类体中提及this时所涉及的假设性类型. 从实用层面来看, 自身类型则明确了特定类型的混合体所需具备的特点. 当特性的混合仅限于另一些或几个特性时, 则应明确该特性是否属于此类别.
自身类型在依赖注入的应用
当我们使用组件来构建大型系统时(即通过组合多个不同功能模块),由于每个模块都有其各自的实现方式(即具体的代码逻辑),我们需要将这些模块的不同选择整合在一起以便发挥协同作用。各个模块之间通常会有一些相互依赖的关系(例如数据访问模块可能依赖日志记录功能),这种关系体现在它们所定义的接口上。在程序模块组装完成后(即完成编译或部署阶段),我们会将各个模块的实际代码引入到主程序中进行运行(即所谓的'注入'过程)。对于Scala语言而言(以Scala为例),可以通过独特的静态特质和自身类型实现了简单的依赖注入效果。
自身类型实现依赖注入
该日志功能由trait Logger {def log(msg: String)}定义,并包含两种不同的实现方式:一个是Cons
全部评论 (0)
还没有任何评论哟~
