Adapter pattern
In [ ]:
Copied!
"""! @brief Design patterns Exampe from the book - Design Patterns: Elements of Reusable Object-Oriented Software - The GoF """
#
# ===== Adapter Design Pattern Exampe (Also known as Wrapper) =====
#
# @author : afondiel | 12/03/2022
#
"""! @brief Design patterns Exampe from the book - Design Patterns: Elements of Reusable Object-Oriented Software - The GoF """
#
# ===== Adapter Design Pattern Exampe (Also known as Wrapper) =====
#
# @author : afondiel | 12/03/2022
#
In [ ]:
Copied!
class EuropeanSocketInterface:
def voltage(self): pass
def live(self): pass
def neutral(self): pass
def earth(self): pass
class EuropeanSocketInterface:
def voltage(self): pass
def live(self): pass
def neutral(self): pass
def earth(self): pass
In [ ]:
Copied!
# Adaptee
class Socket(EuropeanSocketInterface):
def voltage(self):
return 230
def live(self):
return 1
def neutral(self):
return -1
def earth(self): return 0
# Adaptee
class Socket(EuropeanSocketInterface):
def voltage(self):
return 230
def live(self):
return 1
def neutral(self):
return -1
def earth(self): return 0
In [ ]:
Copied!
class USASocketInterface:
def voltage(self): pass
def live(self): pass
def neutral(self): pass
class USASocketInterface:
def voltage(self): pass
def live(self): pass
def neutral(self): pass
In [ ]:
Copied!
# The Adapter
class Adapter(USASocketInterface):
__socket = None
def __init__(self, socket)r:
self.__socket = socket
def voltage(self):
return 110
def live(self):
return self.__socket.live()
def neutral(self):
return self.__socket.neutral()
# The Adapter
class Adapter(USASocketInterface):
__socket = None
def __init__(self, socket)r:
self.__socket = socket
def voltage(self):
return 110
def live(self):
return self.__socket.live()
def neutral(self):
return self.__socket.neutral()
In [ ]:
Copied!
# Client
class ElectricKettle:
__power = None
def __init__(self, power):
self.__power = power
def boil(self):
if self.__power.voltage() > 110:
print ("Kettle on fire!")
else:
if self.__power.live() == 1 and self.__power.neutral() == -1:
print ("Coffee time!")
else:
print ("No power.")
# Client
class ElectricKettle:
__power = None
def __init__(self, power):
self.__power = power
def boil(self):
if self.__power.voltage() > 110:
print ("Kettle on fire!")
else:
if self.__power.live() == 1 and self.__power.neutral() == -1:
print ("Coffee time!")
else:
print ("No power.")
In [ ]:
Copied!
def main():
# Plug in
socket = Socket()
adapter = Adapter(socket)
kettle = ElectricKettle(adapter)
# Make coffee
kettle.boil()
return 0
def main():
# Plug in
socket = Socket()
adapter = Adapter(socket)
kettle = ElectricKettle(adapter)
# Make coffee
kettle.boil()
return 0
In [ ]:
Copied!
if __name__ == "__main__":
print("==== main function =====")
main()
if __name__ == "__main__":
print("==== main function =====")
main()