23种设计模式介绍(Python示例讲解)(12)
2023-04-30 来源:飞速影视
代码讲解:
在这个例子中,我们定义了一个抽象的 CarBuilder 类,它有五个构造方法,分别用于重置汽车、设置座位数量、设置引擎功率、安装行车电脑和安装 GPS。SportsCarBuilder 类继承自 CarBuilder,实现了这些构造方法,并定义了一个 get_car() 方法,用于获取构建好的汽车对象。Director 类则用来指导汽车的构建过程,它接收一个具体的构造者对象,并根据需要的顺序调用构造方法来构建汽车。在主函数中,我们先创建一个 SportsCarBuilder 对象,然后使用它来构建一辆跑车。构建过程由 Director 对象来指导,并返回构建好的汽车对象。最后,我们打印这辆汽车的信息,即它的座位数量、引擎功率、是否安装行车电脑和是否安装 GPS。
需要注意的是,在实际应用中,建造者模式常常会和其他设计模式一起使用,比如工厂方法模式和单例模式。此外,建造者模式还常常被用于构建复杂的 DOM 结构和 XML 文档。
5、原型模式(Prototype)
原型模式(Prototype)是一种创建型设计模式,它允许通过复制现有对象来创建新对象,而不是通过实例化类来创建对象。原型模式允许我们创建一个原型对象,然后通过克隆这个原型对象来创建新的对象,从而避免了重复的初始化操作。
在 Python 中,可以使用 copy 模块中的 copy() 和 deepcopy() 函数来实现原型模式。copy() 函数执行的是浅复制,它复制对象本身,但不复制对象引用的内存空间,因此如果原型对象中包含可变对象(如列表、字典等),那么新对象和原型对象将共享这些可变对象。deepcopy() 函数则执行深复制,它会递归地复制对象及其引用的所有对象,因此新对象和原型对象不会共享任何对象。
下面是一个简单的 Python 实现,演示了如何使用原型模式创建和克隆一个包含可变和不可变成员的对象:
import copyclass Prototype: def __init__(self, x, y, items): self.x = x self.y = y self.items = items def clone(self): return copy.deepcopy(self)if __name__ == "__main__": items = ["item1", "item2", "item3"] original = Prototype(1, 2, items) clone = original.clone() print(f"Original: x={original.x}, y={original.y}, items={original.items}") print(f"Clone: x={clone.x}, y={clone.y}, items={clone.items}") items.append("item4") original.x = 5 original.y = 10 print(f"Original (updated): x={original.x}, y={original.y}, items={original.items}") print(f"Clone (not updated): x={clone.x}, y={clone.y}, items={clone.items}")
本站仅为学习交流之用,所有视频和图片均来自互联网收集而来,版权归原创者所有,本网站只提供web页面服务,并不提供资源存储,也不参与录制、上传
若本站收录的节目无意侵犯了贵司版权,请发邮件(我们会在3个工作日内删除侵权内容,谢谢。)
www.fs94.org-飞速影视 粤ICP备74369512号