Scala 设计模式 装饰者

简介

装饰模式可以在不改变一个对象本身功能的基础上给对象增加额外的新行为。装饰模式是一种用于替代继承的技术,它通过一种无须定义子类的方式来给对象动态增加职责,使用对象之间的关联关系取代类之间的继承关系。在装饰模式中引入了装饰类,在装饰类中既可以调用待装饰的原有类的方法,还可以增加新的方法,以扩充原有类的功能

利用 implicit class 装饰

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
case class Test() {
def m() = println("origin")
}

implicit class TestWrapper(t: Test) {
def wrapper() = println("wrapper")
}


val t = Test()

t.m()
t.wrapper()//给 Test 对象,增加额外的行为

//print

origin
wrapper