博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
scala akka 修炼之路5(scala特质应用场景分析)
阅读量:6500 次
发布时间:2019-06-24

本文共 1310 字,大约阅读时间需要 4 分钟。

    scala中特质定义:包括一些字段,行为(方法/函数/动作)和一些未实现的功能接口的集合,能够方便的实现扩展或混入到已有类或抽象类中。

     scala中特质(trait)是一个非常实用的特性,在程序设计中能够 更好的抽象现实。使程序更关注各自功能和更好的将程序拆分成多个特质模块,使程序具有更强的扩展性。熟悉java的同学。能够将特质理解为抽象类。可是scala中能够在一个类中同一时候混入多个特质(使用extends 或with)。而java中一个类仅仅能继承一个抽象类,假设要实现多个抽象类就必需使用多继承。scala中非常多基础类型功能扩展都使用了特质的特性。比如,基础类型中的布尔操作和比較接口功能扩展都是在Ordered[T]中实现,迭代功能的操作主要在TraversableOnce[+A],GenTraversableOnce[A]中实现,TraversableOnce中混入了GenTraversableOnce特质。小象觉得很多其它使用特质能够更好的站在抽象的层面设计程序和系统框架。

    scala中使用Ordered特质实现基本类型的<,><=,>=功能

trait Ordered[A] extends Any with java.lang.Comparable[A] { def compare(that: A): Int def <  (that: A): Boolean = (this compare that) <  0 def >  (that: A): Boolean = (this compare that) >  0 def <= (that: A): Boolean = (this compare that) <= 0 def >= (that: A): Boolean = (this compare that) >= 0 def compareTo(that: A): Int = compare(that)}

     在系统总体设计阶段。做核心结构或模块抽象时,能够把具有同类行为和属性的特征抽象出来形成一个特质,然后在类型顶层(超级抽象类)或核心或子类型中混入一个或多个须要的特质。

这样做的优点在于能够依照特征对类型中主要功能进行分解和抽象,更好的任务分工,提高后期模块功能的可扩展和可维护性。

这样到每个开发人员手里的都是一个特征。后期功能扩展更加高效和清晰。比如开发一个关于消费者电商购买力的一个数据数据挖掘系统,如果依照用户年龄对用户进行分类简单分类——青年。中年,老年。将衡量用户购买能力基本特征分为下面五类:时间处理特征。地点处理特征,消费处理特征。商品类型处理特征和潜在购买特征;抽象类依照计算维度定义多个钩子函数。实现评价用户购买能力指标的计算模型,特征汇聚等的实现。子类主要代表不同类型用户的平台个性信息,计算因子。权重等基本信息。通过这样的设计方式能够将核心分析计算功能定义在抽象类中,实现功能的更高类聚性(专业的人做专业的事)。

假设使用java实现无论是使用多继承还是接口,想想都头大,并且不便于开发分工和后期维护。抽象类中实现的功能太多,非常难理解维护。

你可能感兴趣的文章
如何创建.gitignore文件,忽略git不必要提交的文件
查看>>
Github的Tom大鸟:我是如何拒绝微软30w的诱惑,专注于Github事业
查看>>
文件处理命令:sed
查看>>
Phpcms V9手机门户设置教程:怎么用PC V9做手机网站
查看>>
(转) SYSTEM_HANDLE_INFORMATION中ObjectTypeIndex的定义
查看>>
使用HTML5监測站点性能
查看>>
洛谷P2089烤鸡
查看>>
智销功能_Shiro权限框架
查看>>
简单的实现IOCP服务器模型
查看>>
2017年9月11日 梁勇 java教材 编程练习题 第二章 2.15 键盘 读取两个点的坐标值(小数),控制台输出两点间距离。...
查看>>
Java面试题总结-Day4
查看>>
git学习
查看>>
Linux内核中锁机制之完成量、互斥量
查看>>
【转】解密“设计模式”
查看>>
正则表达式语法
查看>>
StringBuffer类
查看>>
Navicat for Oracle
查看>>
配置文件的简单使用
查看>>
K-Means聚类算法原理
查看>>
Xshell5中常用linux服务器命令集合
查看>>