桥接模式包含以下主要角色:
1. 抽象类(Abstraction): 定义抽象部分的接口,维护一个指向实现部分的引用。它可以是一个抽象类或接口。
2. 扩充抽象类(RefinedAbstraction): 对抽象类进行扩展,增加更多的功能。
3. 实现类接口(Implementor): 定义实现部分的接口,它通常是一个接口或抽象类。
4. 具体实现类(ConcreteImplementor): 实现实现类接口的具体类。
下面是一个简单的桥接模式的例子:
# 实现类接口
class Implementor:
def operation_implementation(self):
pass
# 具体实现类A
class ConcreteImplementorA(Implementor):
def operation_implementation(self):
print("Concrete Implementor A operation implementation")
# 具体实现类B
class ConcreteImplementorB(Implementor):
def operation_implementation(self):
print("Concrete Implementor B operation implementation")
# 抽象类
class Abstraction:
def __init__(self, implementor):
self._implementor = implementor
def operation(self):
self._implementor.operation_implementation()
# 扩充抽象类
class RefinedAbstraction(Abstraction):
def additional_operation(self):
print("Additional operation in Refined Abstraction")
# 客户端代码
if __name__ == "__main__":
# 创建具体实现类对象
implementor_a = ConcreteImplementorA()
implementor_b = ConcreteImplementorB()
# 创建抽象类对象,并指定实现类对象
abstraction_a = Abstraction(implementor_a)
abstraction_b = RefinedAbstraction(implementor_b)
# 调用抽象类的操作
abstraction_a.operation()
abstraction_b.operation()
abstraction_b.additional_operation()
在上述示例中,Implementor 是实现类接口,ConcreteImplementorA 和 ConcreteImplementorB 是具体实现类。Abstraction 是抽象类,它维护一个指向实现类接口的引用,并定义了一个操作。RefinedAbstraction 扩充了抽象类,增加了额外的操作。
桥接模式的优点在于它能够使抽象部分和实现部分独立变化,增强了系统的灵活性。这种模式特别适用于需要在抽象部分和实现部分之间多层次、多维度变化的情况。
转载请注明出处:http://www.zyzy.cn/article/detail/11844/设计模式