Facebook
From Gray Macaque, 5 Years ago, written in Python.
Embed
Download Paste or View Raw
Hits: 185
  1. class EuropeanSocketInterface:
  2.    def voltage(self): pass
  3.  
  4.    def live(self): pass
  5.    def neutral(self): pass
  6.    def earth(self): pass
  7.  
  8. # Adaptee
  9. class Socket(EuropeanSocketInterface):
  10.    def voltage(self):
  11.       return 230
  12.  
  13.         def live(self):
  14.       return 1
  15.    
  16.    def neutral(self):
  17.       return -1
  18.    
  19.    def earth(self):
  20.       return 0
  21.  
  22. # Target interface
  23. class USASocketInterface:
  24.    def voltage(self): pass
  25.    def live(self): pass
  26.    def neutral(self): pass
  27.  
  28. # The Adapter
  29. class Adapter(USASocketInterface):
  30.    __socket = None
  31.    def __init__(self, socket):
  32.       self.__socket = socket
  33.    
  34.    def voltage(self):
  35.       return 110
  36.    
  37.    def live(self):
  38.       return self.__socket.live()
  39.    
  40.    def neutral(self):
  41.       return self.__socket.neutral()
  42.  
  43. # Client
  44. class ElectricKettle:
  45.    __power = None
  46.    
  47.    def __init__(self, power):
  48.            self.__power = power
  49.    
  50.    def boil(self):
  51.       if self.__power.voltage() > 110:
  52.          print "Kettle on fire!"
  53.       else:
  54.          if self.__power.live() == 1 and \
  55.             self.__power.neutral() == -1:
  56.             print "Coffee time!"
  57.          else:
  58.             print "No power."
  59.  
  60. def main():
  61.    # Plug in
  62.    socket = Socket()
  63.    adapter = Adapter(socket)
  64.    kettle = ElectricKettle(adapter)
  65.        
  66.    # Make coffee
  67.    kettle.boil()
  68.        
  69.    return 0
  70.        
  71. if __name__ == "__main__":
  72.    main()