橋接模式:將抽象部分與他的實現部分分離,是他們都可以獨立變化。
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()