桥接模式其实就是使用组合而非传统的is-a的方式来修正方法
图中Implement为主要的组建,这个我们以后会可能去修正里面的方法OperationImpl,传统的方式就是继承他,然后修正该方法.这里我们的桥接的方法就是,重新定义一个抽象类与Implement相似的类Abstraction,然后再Abstraction中类似于方法Implement的OperationImpl中调用Implement的OperationImpl,接下来我们通过RefinedAbstraction修正
'''Created on Feb 4, 2016 @author: Linux'''
if __name__ == '__main__':
print("Hello World!")
class DraingApi1(object):
def draw_cricle(self,x,y,radius):
print('API1.cricle at{}:{} radius {}'.format(x,y, radius))
class DraingApi2(object):
def draw_cricle(self,x,y,radius):
print('API2.cricle at{}:{} radius {}'.format(x,y, radius))
# Refined Abstraction
class CircleShape(object):
def __init__(self,x,y,radius,drawing):
self.x = x
self.y = y
self.radius = radius
self.drawing_api = drawing
def draw(self):
self.drawing_api.draw_cricle(self.x,self.y,self.radius)
def scale(self):
pass
def main():
shapes = (
CircleShape(1, 2, 3, DraingApi1()),
CircleShape(5, 7, 11, DraingApi2())
)
for shape in shapes:
#shape.scale(2.5)
shape.draw()
if __name__ == '__main__':
main()