第57讲:Scala中Dependency Injection实战详解
本讲我们来学习下依赖注入。让我们从代码出发:
package scala.learn
trait Logger {def log (msg:String)}
trait Auth {
  auth:Logger =>
  def act (msg:String){
    log(msg)
  }
}
object DI extends Auth with Logger {
  override def log (msg:String) = println(msg)
}
object test57{
  def main(args:Array[String]){
    DI.act("I hope you'll like it")
  }
}
首先定义一个特质,它是结构类型。
然后定义另一个特质,它的this指针别名为auth,并且指定混入Logger特质。这样一来,继承Auth特质的对像必须也混入Logger特质,且必须有String类型的参数。
然后,定义一个单例对像DI,它继承自Auth且混入Logger特质,因此,该对像是logger类型,且有String类型参数,另外,它重写了log方法。
这样一来,该对像DI,就可以正常的调用Auth方法里的act方法,act方法又调用重写的log方法,最终打印出msg。
分享下更多的scala资源吧:
百度云盘:http://pan.baidu.com/s/1gd7133t
微云云盘:http://share.weiyun.com/047efd6cc76d6c0cb21605cfaa88c416
360云盘: http://yunpan.cn/cQN9gvcKXe26M (提取码:13cd)
信息来源于 DT大数据梦工厂微信公众账号:DT_Spark
关注微信账号,获取更多关于scala学习内容
第57讲:Scala中Dependency Injection实战详解的更多相关文章
- Scala 深入浅出实战经典 第57讲:Scala中Dependency Injection实战详解
		王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-87讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 ... 
- Scala 深入浅出实战经典 第55讲:Scala中Infix Type实战详解
		王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-64讲)完整视频.PPT.代码下载: 百度云盘:http://pan.baidu.com/s/1c0noOt ... 
- Scala 深入浅出实战经典 第54讲:Scala中复合类型实战详解
		王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-64讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 ... 
- Scala 深入浅出实战经典 第53讲:Scala中结构类型实战详解
		王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-64讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 ... 
- Scala 深入浅出实战经典 第58讲:Scala中Abstract Types实战详解
		王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-87讲)完整视频.PPT.代码下载: 百度云盘:http://pan.baidu.com/s/1c0noOt ... 
- 第58讲:Scala中Abstract Types实战详解
		这一讲我们来学习下抽像类型.让我们看下代码 package scala.learnimport scala.io.BufferedSourceimport scala.io.Source trait ... 
- 第56讲:Scala中Self Types实战详解
		今天学习了self type的内容,让我们来看下代码 package scala.learn class Self{ self => val tmp = "Scala" ... 
- 第55讲:Scala中Infix Type实战详解
		今天学习了Infix type的知识,来看看实战代码: def main(args:Array[String]){ object log { def >>:(data:String) ... 
- 第54讲:Scala中复合类型实战详解
		今天学习了scala的复合类型的内容,让我们通过实战来看看代码: trait Compound_Type1trait Compound_Type2class Compound_Type extends ... 
随机推荐
- eclipse error pages打红X的解决方法
			当我在关闭eclipse时,漫长的等待进度条,我情急之下强关了系统.悲催的是再打开eclipse时新建动态web项目时,总是出现error pages打红X问题,程序执行等都不受影响,就是看着不爽.网 ... 
- ceph与openstack对接
			对接分为三种,也就是存储为openstack提供的三类功能1.云盘,就好比我们新加的硬盘2.原本的镜像也放在ceph里,但是我没有选择这种方式,原因是因为后期有要求,但是我会把这个也写出来,大家自己对 ... 
- hdu 1872(看病要排队)(优先队列)
			看病要排队 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ... 
- 第四十三章 微服务CICD(5)- gitlab + jenkins + docker + dockerregsitry
			一.总体流程 部署: 开发机(mac) ip:11.11.11.11 docker:1.12.1 部署机(centos7) ip:10.211.55.4 docker:1.12.3 生产机(cento ... 
- C# SHA1散列算法
			C# SHA1散列算法 /// <summary> /// C# SHA1散列算法 /// </summary> /// <param name="str&qu ... 
- FreeMarker标签与使用
			模板技术在现代的软件开发中有着重要的地位,而目前最流行的两种模板技术恐怕要算freemarker和velocity了,webwork2.2对两者都有不错的支持,也就是说在webwork2中你可以随意选 ... 
- 【Git】简单地使用github当做远程共享仓库
			简单地使用github当做远程共享仓库 1.进入各自的github,选取一个人的github作为总的远程共享仓库,其余成员每次修改完项目后pull request请求合并自己的修改内容. 2.其余开发 ... 
- Android LayoutInflater原理分析,带你一步步深入了解View(一)
			转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/12921889 有不少朋友跟我反应,都希望我可以写一篇关于View的文章,讲一讲Vi ... 
- Qt ffmpeg环境搭建
			ffmpeg下载地址:https://ffmpeg.zeranoe.com/builds/ 版本选择第一个,然后多少位看自己的pc(我的是64),右边对应三个都要下载,Static,Shared,De ... 
- eclipse 搭建Swt 环境
			我本是想用java开发一个记事本,开发记事本使用到SWT插件,我从网上找了许多的资料去集成插件,创建我的第一个SWT项目,以下是我搭建SWT环境的过程. 一.查看当前使用的exlipse 版本型号 在 ... 
