桥接模式包含以下几个主要角色:
1. 抽象部分(Abstraction): 定义抽象部分的接口,并维护一个指向实现部分对象的引用。
2. 扩展抽象部分(Refined Abstraction): 扩展抽象部分,通过增加新的方法或功能来实现更复杂的抽象。
3. 实现部分(Implementor): 定义实现部分的接口,为抽象部分提供实现。
4. 具体实现部分(Concrete Implementor): 实现实现部分接口的具体类。
以下是一个简单的 Python 示例:
# 实现部分接口
class Implementor:
def operation_implementation(self):
pass
# 具体实现部分A
class ConcreteImplementorA(Implementor):
def operation_implementation(self):
return "Concrete Implementor A Operation"
# 具体实现部分B
class ConcreteImplementorB(Implementor):
def operation_implementation(self):
return "Concrete Implementor B Operation"
# 抽象部分
class Abstraction:
def __init__(self, implementor):
self.implementor = implementor
def operation(self):
return self.implementor.operation_implementation()
# 扩展抽象部分
class RefinedAbstraction(Abstraction):
def extended_operation(self):
return "Extended Operation"
# 客户端代码
implementor_a = ConcreteImplementorA()
implementor_b = ConcreteImplementorB()
abstraction_a = Abstraction(implementor_a)
result_a = abstraction_a.operation()
print(result_a) # 输出 "Concrete Implementor A Operation"
abstraction_b = Abstraction(implementor_b)
result_b = abstraction_b.operation()
print(result_b) # 输出 "Concrete Implementor B Operation"
refined_abstraction = RefinedAbstraction(implementor_a)
result_c = refined_abstraction.extended_operation()
print(result_c) # 输出 "Extended Operation"
在这个示例中,Implementor 是实现部分的接口,ConcreteImplementorA 和 ConcreteImplementorB 是具体实现部分。Abstraction 是抽象部分,它包含一个指向实现部分对象的引用。RefinedAbstraction 扩展了抽象部分,增加了新的方法。
桥接模式的主要优点是能够使抽象部分和实现部分可以独立变化,而不会相互影响。这样一来,系统的灵活性和可扩展性得到了提高。桥接模式适用于当一个类存在两个独立变化的维度时,通过桥接模式可以避免类的指数级增长。
转载请注明出处:http://www.zyzy.cn/article/detail/13943/设计模式