-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathBridge.kt
52 lines (38 loc) · 952 Bytes
/
Bridge.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
package patterns.structural
open class Controller(private val rc: Rc) {
fun start() = rc.engineStart()
fun stop() = rc.engineStop()
fun setPower(power: Int) = rc.setPower(power)
}
class ModifiedController(private val rc: Rc) : Controller(rc) {
fun turbo() {
rc.setPower(100)
}
}
interface Rc {
fun engineStart()
fun engineStop()
fun setPower(power: Int)
}
class Helicopter : Rc {
override fun engineStart() {
println("Helicopter engine start")
}
override fun engineStop() {
println("Helicopter engine stop")
}
override fun setPower(power: Int) {
println("Helicopter set power $power")
}
}
class Buggy : Rc {
override fun engineStart() {
println("Buggy engine start")
}
override fun engineStop() {
println("Buggy engine stop")
}
override fun setPower(power: Int) {
println("Buggy set power $power")
}
}