mirror of
https://github.com/rjNemo/design-patterns
synced 2026-06-06 10:36:39 +00:00
31 lines
893 B
Python
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)
|