`

Scala Composition

 
阅读更多

原创转载请注明出处:http://agilestyle.iteye.com/blog/2334870

 

食物与厨具具有存储、烹饪、清洗的能力,表示成一个“has-a”的关系

厨房和房间,为了突出厨房的“房间性”,表示成一个“is-a”的关系

记住:Prefer composition to inheritance

package org.fool.scala.composition

trait Building

trait Room

trait Storage

trait Sink

trait Store[T]

trait Cook[T]

trait Clean[T]

trait Food extends Store[Food] with Clean[Food] with Cook[Food]

trait Utensil extends Store[Utensil] with Clean[Utensil] with Cook[Utensil]

trait Kitchen extends Room {
  val storage: Storage
  val sinks: Vector[Sink]
  val food: Food
  val utensils: Vector[Utensil]
}

trait House extends Building {
  val kitchen: Vector[Kitchen]
}

object CompositionTest extends App {
  
}

 

参考资料:

Scala编程思想

 

分享到:
评论

相关推荐

    Scala编程语言详解(从入门到精通)spark

    - **可扩展性**:Scala 的设计考虑到了可扩展性,支持通过 Trait 实现混入组合(Mixin Composition)、抽象类型成员、泛型等多种机制。 - **强大的类型系统**:Scala 的类型系统比 Java 更加强大和灵活,支持类型...

    Functional Programming Principles in Scala Assignments Week1

    9. **函数组合(Function Composition):** 使用`.`操作符将两个函数连接在一起,形成一个新的函数,使代码更简洁。 10. **类型推断(Type Inference):** Scala的类型系统允许编译器自动推断变量的类型,减少了...

    深入了解 Scala 编程语言

    Scala是一门多范式的编程语言,一种类似Java的编程语言,设计初衷是实现可伸缩的语言、并集成面向对象编程和函数式编程的各种...另外,类可以被子类化,而且Scala还提供了基于mixin的组合(mixin-based composition)。

    Programming Scala

    * Know how to use mixin composition with traits, pattern matching, concurrency with Actors, and other essential features, * Take advantage of Scala's built-in support for XML, * Learn how to develop ...

    Scala in Depth

    Scala's OO features—type member inheritance, multiple inheritance, and composition Functional concepts and patterns—immutability, applicative functors, and monads ===================================...

    Programming in Scala

    ### 编程在Scala:全面理解与应用 #### 标题解析:“Programming in Scala” - **Scala语言**:Scala是一种现代、多范式编程语言,它融合了面向对象编程和函数式编程的特点,旨在提高代码的简洁性和可读性。 - **...

    scala futures and promises

    ### Scala Futures and Promises 实践入门 #### 凤凰木 #### September 14, 2018 在本文档中,我们将通过一系列实例来探讨Scala中的`Future`和`Promise`的概念,并与Java中的多线程技术进行对比。这些概念是函数式...

    tuplez:Scala元组组成

    Scala和Scala.js中的元组组成。 // tupleN + scalar, scalar + tupleN, tupleN + tupleM, up to Tuple22 " app.tulz " %%% " tuplez-full " % " 0.3.4 " // or // tupleN + scalar, scalar + tupleN, tupleN + ...

    functional-programming-scala:一个包含Scala中的函数式编程示例的存储库

    8. **函数组合(Function Composition)** 函数组合是将两个或更多函数串联起来形成新函数的过程。在Scala中,可以通过`.`操作符或`andThen`、`compose`方法实现。 9. **类型系统(Type System)** Scala的类型...

    akka-play-scala-demo:akka-播放-scala-demo

    同时,Play 的Action Composition特性使得可以在控制器方法之间共享代码,提高代码复用。 项目可能还包含了单元测试和集成测试,通常使用ScalaTest或Specs2等测试框架。测试是确保代码质量和功能完整性的关键部分,...

    play24-action-composition-di-example:play24-action-composition-di-example

    【标题】"play24-action-composition-di-example:play24-action-composition-di-example" 提示我们这是一个关于Play Framework 2.4版本的项目实例,它着重于动作组合(Action Composition)和依赖注入(Dependency ...

    Python algorithm

    5. 函数组合(Function Composition):函数式编程鼓励将简单的函数组合成更复杂的操作,以便在保持程序易于理解的同时实现更强大的功能。 Scala是一种多范式的编程语言,它支持面向对象编程(Object-Oriented ...

    猕猴桃影视系统源码 影视APP源码

    Vue 3.0 引入了 Composition API、响应式系统重构等一系列新特性,使得前端开发变得更加高效、灵活。 - **Scala**:一种多范式的编程语言,融合了面向对象编程和函数式编程的特性。Scala 在大数据处理领域有广泛的...

    play 1.1框架

    通过Action Composition,开发者可以方便地实现权限控制、日志记录等功能。 4. **模板引擎**:Play提供了一种灵活的模板引擎,使得HTML与业务逻辑可以轻松分离。模板支持嵌入Scala或Java表达式,让视图层的编写更加...

    sbt-dependency-check:用于OWASP DependencyCheck的SBT插件。 监视您的依赖关系并报告是否存在任何已知的漏洞(例如CVE)

    `security-audit`、`static-analysis`、`vulnerabilities`、`cve` 和 `software-composition-analysis` 这些标签揭示了 `sbt-dependency-check` 关注的重点领域。软件组合分析是识别和管理应用程序中所有直接和间接...

    finch-intro:雀科简介。 代码和幻灯片

    - **Composition**: Finch支持通过函数组合来构建复杂的API,使得代码结构清晰且易于测试。 2. **使用场景** - 微服务架构:由于其轻量级和模块化设计,Finch非常适合构建微服务,每个服务可以独立部署和扩展。 ...

    A Calculus of Mobile Processes Part I and part II

    π-演算的理论基础对后来的编程语言设计产生了深远影响,例如,像Erlang、Scala和OCaml这样的函数式编程语言都受到了π-演算的启发,支持高效并发和分布式计算。此外,π-演算也是形式化验证和模型检查等软件工程...

    spark_engine:通过组合许多不同的Spark操作来构建复杂的Spark执行计划

    使用composition和yaml:D建立一个复杂的火花执行计划。 目录 状态 主分支状态: 支持的版本 我们现在只关注最新版本。 因此,如果您使用它,请注意它仅适用于: Java:1.11 Scala2.12 斯巴达克:3.0.0

    Learning Functional Programming in Go-Packt Publishing(2017).pdf

    - **组合(Composition)**: 函数式编程鼓励将应用程序分解为小的可重用组件,并通过这些组件构建应用程序。这种方式有助于提高代码的复用性和可维护性。 - **单子(Monads)**: 单子是一种用于管理数据流的抽象结构,它...

    library-2.0.4.zip

    6. **函数组合(Function Composition)**:库中的一些工具函数支持函数的组合,使得多个小型函数可以串联起来形成复杂的业务逻辑,提高了代码的模块化程度。 7. **Option类型**:源自Scala的Option类型,用于处理...

Global site tag (gtag.js) - Google Analytics