Remote.kt 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. package structural_patterns.bridge
  2. // This is BRIDGE between concrete remote and concrete device
  3. open class Remote(private val device:Device) {
  4. fun togglePower() {
  5. if (device.isEnabled()) {
  6. device.disable()
  7. println("$device disable")
  8. }
  9. else {
  10. device.enable()
  11. println("$device enable")
  12. }
  13. }
  14. fun volumeDown() {
  15. if (device.getVolume()>=10) {
  16. device.setVolume(device.getVolume() - 10)
  17. println("$device set volume = ${device.getVolume()}")
  18. }
  19. }
  20. fun volumeUp() {
  21. if (device.getVolume()<90) {
  22. device.setVolume(device.getVolume() + 10)
  23. println("$device set volume = ${device.getVolume()}")
  24. }
  25. }
  26. fun channelDown() {
  27. if (device.getChannel()>1) {
  28. device.setChannel(device.getChannel() - 1)
  29. println("$device set channel = ${device.getChannel()}")
  30. }
  31. }
  32. fun channelUp() {
  33. device.setChannel(device.getChannel() + 1)
  34. println("$device set channel = ${device.getChannel()}")
  35. }
  36. }
  37. interface Device {
  38. fun isEnabled():Boolean
  39. fun enable()
  40. fun disable()
  41. fun getVolume(): Int
  42. fun setVolume(_volume: Int)
  43. fun getChannel(): Int
  44. fun setChannel(_channel: Int)
  45. }