design-patterns/structural/bridge/main.py
2020-09-29 22:05:56 +02:00

31 lines
893 B
Python

"""
The client code should be able to work with any pre-configured abstraction-
implementation combination.
"""
from structural.bridge.abstractions import Abstraction
from structural.bridge.implementations import ConcreteImplementationA, \
ConcreteImplementationB
def client_code(abstraction: Abstraction) -> None:
"""
Except for the initialization phase, where an Abstraction object gets
linked with a specific Implementation object, the client code should only
depend on the Abstraction class. This way the client code can support any
abstraction-implementation combination.
"""
print(abstraction.operation(), end="")
implementation = ConcreteImplementationA()
abstraction = Abstraction(implementation)
client_code(abstraction)
print("\n")
implementation = ConcreteImplementationB()
abstraction = Abstraction(implementation)
client_code(abstraction)