桥接模式
模式定义:将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式,又称为柄体(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)

浙公网安备 33010602011771号