桥接模式:将抽象部分与他的实现部分分离,是他们都可以独立变化。
PC上之所以能够硬件不用关心软件,软件也不用关系硬件。都是接口的功劳。统一标准,针对接口编程。 HAL层的应用。
当我们的设计中出现多对多的关系,并且可以分成两层处理的时候就可以考虑使用这种设计模式来处理。以下是针对,手机品牌和手机软件为例来进行编程。
from abc import ABCMeta, abstractmethod
class PhoneBrand(metaclass=ABCMeta):
def __init__(self):
self.soft = None
def set_soft(self, soft):
self.soft = soft
@abstractmethod
def run(self):
pass
class IPhone(PhoneBrand):
def __init__(self):
super(IPhone, self).__init__()
def run(self):
self.soft.run()
class Nokia(PhoneBrand):
def run(self):
self.soft.run()
class PhoneSoft(metaclass=ABCMeta):
@abstractmethod
def run(self):
pass
class PhoneGame(PhoneSoft):
def run(self):
print("Running PhoneGame")
class PhoneContact(PhoneSoft):
def run(self):
print("Running PhoneContact")
if __name__ == "__main__":
iphone = IPhone()
iphone.set_soft(PhoneGame())
iphone.run()
iphone.set_soft(PhoneContact())
iphone.run()
nokia = Nokia()
nokia.set_soft(PhoneGame())
nokia.run()
nokia.set_soft(PhoneContact())
nokia.run()