""" 实例 汤宝宝穿越到了星球大战世界,并掉到了克隆人军队的生产工厂。 """ from abc import ABC, abstractmethod from copy import deepcopy # 克隆人接口 class CloneTrooper(ABC): @abstractmethod def clone(self) -> "CloneTrooper": pass @abstractmethod def fight(self): pass @abstractmethod def setid(self, id: int): pass # 具体的克隆人类 class CloneTrooperA(CloneTrooper): def __init__(self, id: int): self.id = id def clone(self): print(f"克隆人A-{self.id}号正在克隆...") return deepcopy(self) def fight(self): print(f"克隆人A-{self.id}号准备战斗!") def setid(self, id: int): self.id = id class CloneTrooperB(CloneTrooper): def __init__(self, id: int): self.id = id def clone(self): print(f"克隆人B-{self.id}号正在克隆...") return deepcopy(self) def fight(self): print(f"克隆人B-{self.id}号准备战斗!") def setid(self, id: int): self.id = id def main(): print("========= 原型模式 =========") # 创建原型克隆人A prototype_a = CloneTrooperA(0) prototype_a.fight() clone_a1 = prototype_a.clone() clone_a1.setid(1) clone_a1.fight() clone_a2 = clone_a1.clone() clone_a2.setid(2) clone_a2.fight() # 创建原型克隆人B prototype_b = CloneTrooperB(0) prototype_b.fight() clone_b1 = prototype_b.clone() clone_b1.setid(1) clone_b1.fight() clone_b2 = clone_b1.clone() clone_b2.setid(2) clone_b2.fight() print("\n======= 原型模式结束 =======") if __name__ == "__main__": main()