`
edge
  • 浏览: 69169 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Scala概述(六)合成(3.总结)

 
阅读更多

面向服务的组件模型(Service-Oriented Component Model

Scala中,类的抽象与合成机制可以被视作面向服务的组件模型的基础。软件组件是一个个有明确定义的,提供特定服务的计算单元。一般而言,一个软件组件并不是完全自含的,也就是说它的实现依赖于其他一系列提供相应服务的组件。

Scala中,软件组件即对应着类和trait,类和trait的具体成员相当于他们获得的服务,抽象成员相当于他们所需要的服务。组件的组合通过混入的方式来实现,从而使得开发者可以通过较小的组件来产生较大的组件。

Scala的基于混入的合成机制通过名称来识别服务,举例而言,一个抽象方法m,可以被任何一个定义了方法m的类C来实现,只需要将类C进行混入即可。Scala的组件合成机制通过这种方式将需要实现的服务与服务的提供者自动结合起来,再加上“类的具体成员总是覆盖抽象成员”这一规则,Scala就形成了一套递归的、插件式的组件机制,使得组件服务不需要显式进行组装。

上述机制可以简化大型的、存在大量递归依赖关系的组件之间的集成,并且能够有效保证(性能方面的)可扩展性,因为服务与调用者之间的结合是依靠编译器来推断的。这一机制与传统的黑盒式组件相比,最大好处是每个组件都是可扩展的实体:通过集成、重载而实现进化,并且可以对已有组件增加新服务或升级现有服务。总体来说,这些特性有效地支持了一种平滑的、渐进式的软件演进过程。

 

分享到:
评论

相关推荐

    scala-2.12.14.zip&scala-2.12.11.tgz Linux版本压缩包.rar

    3. 验证安装:在终端输入`scala`,如果能启动Scala REPL(Read-Eval-Print Loop),则表明安装成功。 对于使用Scala进行大数据处理,首先需要安装Spark,然后可以使用Scala API创建Spark程序。Spark提供了...

    jackson-module-scala_2.11-2.6.7.1-API文档-中英对照版.zip

    赠送jar包:jackson-module-scala_2.11-2.6.7.1.jar; 赠送原API文档:jackson-module-scala_2.11-2.6.7.1-javadoc.jar; 赠送源代码:jackson-module-scala_2.11-2.6.7.1-sources.jar; 赠送Maven依赖信息文件:...

    scala-2.12.11.tgz

    3. 添加Scala的`bin`目录到系统路径,例如编辑`~/.bashrc`或`~/.bash_profile`文件,添加`export PATH=$PATH:/path/to/scala-2.12.11/bin`。 4. 使更改生效,运行`source ~/.bashrc`或`source ~/.bash_profile`。 5....

    scala-2.12.11.zip

    - Scala编译器(scala.exe) - Scala解释器(scala.bat) - 文档(包括API文档和用户指南) - 示例代码 - 可能还包括用于构建Scala项目的构建工具,如sbt(Scala Build Tool) 要开始使用Scala,开发者需要解压这个...

    scala-2.12.13.tgz

    3. **设置环境变量**:为了能够在任何地方使用Scala命令,你需要更新`PATH`环境变量。打开或编辑`~/.bashrc`或`~/.bash_profile`文件,添加以下行: ``` export SCALA_HOME=/usr/local/scala-2.12.13 export PATH...

    scala-2.12.11.tar.gz

    Scala 是一门多范式(multi-paradigm)的编程语言,设计初衷是要集成面向对象编程和函数式编程的各种特性。 Scala 运行在Java虚拟机上,并兼容现有的Java程序。 Scala 源代码被编译成Java字节码,所以它可以运行于...

    scala-2.13.8.zip

    3. `doc`目录:可能包含Scala API文档,方便开发者查阅。 4. `src`目录:可能包含Scala源代码,对于学习语言内部工作原理很有帮助。 5. `LICENSE`和`NOTICE`文件:描述了Scala的许可协议和版权信息。 使用这个...

    scala-2.11.8.tar.gz

    7. **Dotty/Scala 3**:Scala 2.11.8是在Scala 3(也称为Dotty)发布之前的版本。Scala 3致力于解决 Scala 2 中的一些复杂性和不一致性问题,同时引入了一些新的语言特性。 8. **跨平台支持**:Scala可以编译为Java...

    scala-2.12.12.zip

    7. **Dotty/Scala 3**:Scala 2.12.x是向Scala 3过渡的重要一步,Scala 3(以前称为Dotty)旨在解决Scala 2的一些复杂性和不一致性问题,同时保留其强大的特性。 安装Scala 2.12.12通常包括以下步骤: 1. 下载并...

    scala-intellij-bin-2016.3.9

    "scala-intellij-bin-2016.3.9"是针对Scala语言的一个特定版本的IntelliJ IDEA插件,该版本为2016.3.9。这个插件是专门为Scala开发者设计的,旨在提高他们在IntelliJ IDEA中的开发体验。 Scala是一种多范式编程语言...

    官网scala-2.11.8.tar.gz

    3. **移动到可执行路径**:为了全局访问Scala编译器和解释器,你需要将其bin目录添加到PATH环境变量中。通常,你可以将scala-2.11.8/bin目录链接到 `/usr/local/bin` 或者 `/usr/bin` 目录下。 4. **验证安装**:...

    scala-library-2.10.0.jar

    scala-library-2.10.0.jar scala-library-2.10.0.jar scala-library-2.10.0.jar

    jackson-module-scala_2.12-2.6.7.1-API文档-中文版.zip

    赠送jar包:jackson-module-scala_2.12-2.6.7.1.jar; 赠送原API文档:jackson-module-scala_2.12-2.6.7.1-javadoc.jar; 赠送源代码:jackson-module-scala_2.12-2.6.7.1-sources.jar; 赠送Maven依赖信息文件:...

    scala-2.12.3|2.11.11.msi网盘下载链接

    #### 六、总结 通过以上介绍,我们可以了解到如何在Windows环境下安装和配置Scala,以及如何使用Scala Shell进行交互式编程。Scala作为一种强大的编程语言,能够帮助开发者更高效地编写高质量的软件。无论是对于...

    org.scala-ide.sdt.update-site.part2.rar

    eclipse scala插件,第二部分

    scala plugins 2018.3.5版本

    "Scala Plugins 2018.3.5版本"是专门为IntelliJ IDEA设计的一款插件,IntelliJ IDEA是一款功能丰富的Java集成开发环境,也支持多种其他语言,包括Scala。这款插件的目的是增强IDEA对Scala语言的支持,提供语法高亮、...

    scala-2.9.0.1.part3.rar

    scala-2.9.0.1.part3.rarscala-2.9.0.1.part3.rarscala-2.9.0.1.part3.rarscala-2.9.0.1.part3.rarscala-2.9.0.1.part3.rarscala-2.9.0.1.part3.rar

    Scala_2.7.6_API.chm.7z

    3. **特质(Traits)**:Scala的特质类似于Java的接口,但可以包含实现代码,允许多重继承。这为设计灵活的软件架构提供了强大的工具。 4. **函数与匿名函数**:Scala中的函数是一等公民,可以赋值给变量、作为参数...

    jackson-module-scala_2.11-2.6.7.1-API文档-中文版.zip

    赠送jar包:jackson-module-scala_2.11-2.6.7.1.jar; 赠送原API文档:jackson-module-scala_2.11-2.6.7.1-javadoc.jar; 赠送源代码:jackson-module-scala_2.11-2.6.7.1-sources.jar; 赠送Maven依赖信息文件:...

    scala-2.11.8.tgz.zip

    3. **函数式编程**:Scala支持函数作为一等公民,可以赋值给变量、作为参数传递和作为返回值。它有丰富的函数式数据结构,如列表、映射和集合,并支持柯里化、尾递归和惰性求值。 4. **复合**:Scala鼓励使用组合而...

Global site tag (gtag.js) - Google Analytics