将需求分离各部份使它们可各自独立变化,之後再透过接口传递参数來引用以实现调用以達到解耦之目的,如將手机依软件和品牌作分类以便降低耦合程度,再讓两种分类以方法透過參數傳遞來引用以最終組合手機之整体需求,此桥接模式可讓需求分离成各分类以可獨自变化且不影响其他分类以降低耦合程度。
UML类图:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
Import abc
class Handsetsoft(object): #軟件抽象基类
@abc.abstractmethod
def run(self):
raise NotImplementedError
class Handsetgame(Handsetsoft): #软件具体子類1
def run(self):
print("手机---游戏")
class Handsetaddress(Handsetsoft): #软件具体子類2
def run(self):
print("手机---通信录")
class Handsetbrand(object): #品牌抽象基类
def __init__(self):
self.soft =""
def set_handsetsoft(self,soft): #此soft傳參代表要引用之軟件对象
self.soft =soft
@abc.abstractmethod
def run(self):
raise NotImplementedError
class HandsetbrandN(Handsetbrand): #品牌具体子类N
def run(self):
self.soft.run()
class HandsetbrandM(Handsetbrand): #品牌具体子类M
def run(self):
self.soft.run()
實際業務邏輯之場景如下:
if __name__ =="__main__":
#實例化軟件对象
game =Handsetgame()
address =Handsetaddress()
#實例化品牌对象,並透過传参來链接两个类使之可调用软件对象的方法
N=HandsetbrandN()
N.set_handsetsoft(game)
N.run()
M =HandsetbrandM()
M.set_handsetsoft(address)
M.run()
輸出:
手机---游戏
手机---通信录