桥接模式

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

 

posted @ 2019-01-29 14:39  家迪的家  阅读(189)  评论(0编辑  收藏  举报