整个模型跑一遍
三个形状:长方形 3×4、正方形边长 5、三角形底 6 高 5。三个形状走完整条链路:
class Shape:
def area(self):
raise NotImplementedError
class Rect(Shape):
def __init__(self, w, h):
self.w, self.h = w, h
def area(self):
return self.w * self.h
class Square(Shape):
def __init__(self, s):
self.s = s
def area(self):
return self.s ** 2
class Tri(Shape):
def __init__(self, b, h):
self.b, self.h = b, h
def area(self):
return self.b * self.h // 2
class Formatter:
def render(self, shape):
return "面积=" + str(shape.area())
class Store:
def __init__(self):
self.box = []
def save(self, text):
self.box.append(text)
class Reporter:
def __init__(self, fmt, store):
self.fmt, self.store = fmt, store
def report(self, shape):
self.store.save(self.fmt.render(shape))
ALL = [Rect(3, 4), Square(5), Tri(6, 5)]
st = Store()
r = Reporter(Formatter(), st)
for s in ALL:
r.report(s)
print("/".join(st.box))
全部评论