# coding=utf-8
# 实现的绘图API 1
class DrawingAPI1(object):
def draw_circle(self, x, y, radius):
print('API1.圆的比例 {}:{} 半径 {}'.format(x, y, radius))
# 实现的绘图API 2
class DrawingAPI2(object):
def draw_circle(self, x, y, radius):
print('API2.圆的比例 {}:{} 半径 {}'.format(x, y, radius))
# 抽象的圆形状
class CircleShape(object):
def __init__(self, x, y, radius, drawing_api):
self._x = x
self._y = y
self._radius = radius
self._drawing_api = drawing_api
# 低层,即具体实施
def draw(self):
self._drawing_api.draw_circle(self._x, self._y, self._radius)
# 半径的范围
def scale(self, pct):
self._radius *= pct
def main( ):
shapes = (CircleShape(1, 2, 3, DrawingAPI1( )), CircleShape(5, 7, 11, DrawingAPI2( )))
for shape in shapes:
shape.scale(2.5)
shape.draw( )
if __name__ == '__main__':
main( )
输出:
API1.圆的比例 1:2 半径 7.5
API2.圆的比例 5:7 半径 27.5