桥接模式
模式定义:将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式,又称为柄体(Handle and Body)模式或接口(Interface)模式。
模式结构:
- Abstraction:抽象类
- RefinedAbstraction:扩充抽象类
- Implementor:实现类接口
- ConcreteImplementor:具体实现类
显著优势:提高了系统的扩充性,且相较多继承减少了类的个数。
背景介绍:汽车有Honda,BWM,BenZ,变速箱可分别采用manual,auto,amt。
传统继承需要实现3x3 = 9个具体类
采用桥接模式则仅需要3+3=6个具体类
python实现:
from abc import abstractmethod from abc import ABCMeta class Car(metaclass=ABCMeta): @abstractmethod def run(self): pass def select_gearbox(self,GearBoxInterface): self.gear_box = GearBoxInterface.gear() class GearBoxInterface(metaclass=ABCMeta): @abstractmethod def gear(self): return class BenZCar(Car): def run(self): print("BenZ is run") class HondaCar(Car): def run(self): print("Honda is run") class Manual(GearBoxInterface): """手动挡""" def gear(self): return "manual" class Auto(GearBoxInterface): """自动挡""" def gear(self): return "auto" class AMT(GearBoxInterface): """手自一体""" def gear(self): return "AMT" if __name__ == "__main__": yg = HondaCar() auto = Auto() manual = Manual() yg.select_gearbox(auto) yg.run() print(yg.gear_box) yg.select_gearbox(manual) print(yg.gear_box)