桥接模式,希望能够将一个事物的两个维度分离(解耦),使其都可以独立地变化,并通过桥梁连接起来。

桥接模式的核心思想是通过封装,将一个抽象类的相关参数和方法分别作为桥接类的属性,这样在实例化桥接类的对象后,通过修改桥接类的属性,便可以实现抽象和实现之间的独立变化。
优点:
缺点:
实现角色:
Abstraction)Refined Abstraction)Implementor)Concrete Implementor)import abc
# 抽象
class Mobile(metaclass=abc.ABCMeta):
def __init__(self, cover):
self.cover = cover
@abc.abstractmethod
def buy(self):
pass
# 实现者
class Cover(metaclass=abc.ABCMeta):
@abc.abstractmethod
def put(self):
pass
# 细化抽象
class Xiaomi(Mobile):
def buy(self):
self.cover.put(self)
# 细化抽象
class Huawei(Mobile):
def buy(self):
self.cover.put(self)
# 细化抽象
class Iphone(Mobile):
def buy(self):
self.cover.put(self)
# 具体实现者
class YellowCover(Cover):
def put(self, mobile):
print(f"套着{self.__class__.__name__}的{mobile.__class__.__name__}")
# 具体实现者
class RedCover(Cover):
def put(self, mobile):
print(f"套着{self.__class__.__name__}的{mobile.__class__.__name__}")
# 具体实现者
class GreenCover(Cover):
def put(self, mobile):
print(f"套着{self.__class__.__name__}的{mobile.__class__.__name__}")
if __name__ == "__main__":
red_xiaomi = Xiaomi(RedCover())
red_xiaomi.buy()
green_huawei = Huawei(GreenCover())
green_huawei.buy()
red_huawei = Huawei(RedCover())
red_huawei.buy()
yellow_iphone = Iphone(YellowCover())
yellow_iphone.buy()