本文共 1558 字,大约阅读时间需要 5 分钟。
# 假设存在多个图形,并且可以通过基本图形组合成复合图形from abc import ABCMeta, abstractmethod# 抽象组件class Graphic(metaclass=ABCMeta): @abstractmethod def draw(self): pass#叶子组件class Point(Graphic): def __init__(self, x, y): self.x = x self.y = y def __str__(self): return f"Point({self.x}, {self.y})" def draw(self): print(str(self))class Line(Graphic): def __init__(self, p1, p2): self.p1 = p1 self.p2 = p2 def __str__(self): return f"Line[{self.p1}, {self.p2}]" def draw(self): print(str(self))# 复合组件class Picture(Graphic): def __init__(self, iterable): self.children = [] for i in iterable: self.add(i) def add(self, grophic): self.children.append(grophic) def draw(self): print("---复合图形---") for i in self.children: i.draw() print("---复合图形---")print("-----------pic1-------------------")p1 = Point(2,3)l1 = Line(Point(3,4), Point(6,7))l2 = Line(Point(3,5), Point(6,8))pic1 = Picture([p1, l1, l2])pic1.draw()print("-----------pic2-------------------")p2 = Point(3,3)l3 = Line(Point(4,4), Point(7,7))l4 = Line(Point(5,5), Point(8,8))pic2 = Picture([p2, l3, l4])pic2.draw()print("-----------pic-------------------")pic = Picture([pic1, pic2])pic.draw()
转载地址:http://duec.baihongyu.com/