美文网首页数客联盟
Decorator pattern in Scala

Decorator pattern in Scala

作者: Woople | 来源:发表于2017-01-12 19:22 被阅读0次

装饰模式在《Design Patterns: Elements of Reusable Object-Oriented Software》的定义如下:

Attach additional responsibilities to an object dynamically. Decorators provide a flexible alternative to subclassing for extending functionality.

对于装饰模式的优缺点或者代码样例可以参考电子工业出版社的《Java 与模式》和清华大学出版社的《Java设计模式》

下面将重点介绍在函数式编程中如何实现装饰模式
装饰模式主要是为了扩展功能,所以在下面的代码中可以看到,为add,subtract,multiply,divide四个函数“装饰”了一层打印结果的函数,使得这些函数有了新的功能

object DecoratorPattern {
  def add(a: Int, b: Int) = a + b
  def subtract(a: Int, b: Int) = a - b
  def multiply(a: Int, b: Int) = a * b
  def divide(a: Int, b: Int) = a / b

  def makeLogger(calcFn: (Int, Int) => Int) =
    (a: Int, b: Int) => {
      val result = calcFn(a, b)
      println("Result is: " + result)
      result
    }

  val loggingAdd = makeLogger(add)
  val loggingSubtract = makeLogger(subtract)
  val loggingMultiply = makeLogger(multiply)
  val loggingDivide = makeLogger(divide)

  def main(args: Array[String]): Unit = {
    loggingAdd(2, 3)
    loggingSubtract(2, 3)
    loggingMultiply(2, 3)
    loggingDivide(6, 3)
  }
}

返回目录

相关文章

网友评论

    本文标题:Decorator pattern in Scala

    本文链接:https://www.haomeiwen.com/subject/dtedbttx.html