gpt4 book ai didi

python - Python中的工厂模式

转载 作者:IT老高 更新时间:2023-10-28 20:44:47 30 4
gpt4 key购买 nike

我目前正在用 Python 实现工厂设计模式,我有几个问题。

  1. 有什么方法可以防止直接实例化实际的具体类?例如,如果我有一个生成 Vehicles 的 VehicleFactory,我希望用户只使用该工厂,并防止任何人意外地直接实例化 Car() 或 Truck()。我也许可以在 init() 中抛出异常,但这也意味着工厂无法创建它的实例...

  2. 现在在我看来,工厂越来越让人上瘾。似乎一切都应该成为工厂,这样当我更改内部实现时,客户端代码不会改变。我很想知道什么时候需要使用工厂,什么时候不适合使用。例如,我可能有一个 Window 类,而现在只有一个这种类型(没有 PlasticWindow、ReinforcedWindow 或类似的东西)。在这种情况下,我是否应该为客户端使用工厂来生成 Window,以防将来我可能会添加更多类型的 Windows?

  3. 我只是想知道是否有一种通常的方式来调用工厂。例如,现在我将我的 Vehicle 工厂称为 Vehicles,因此代码将类似于 Vehicles.create(...)。我看到很多教程都在做类似 VehicleFactory 的教程,但我觉得它太长了,而且有点暴露了实现。

编辑:我所说的“公开实现”的意思是它让人们知道它是一个工厂。我的感觉是客户不需要知道它是一个工厂,而是作为可以为您返回对象的某个类(当然这是一个工厂,但也许不需要明确告诉客户?)。我知道源代码很容易暴露,所以我的意思不是“暴露源代码中的功能实现方式”。

谢谢!

最佳答案

Python 风格。不要使用添加不必要的抽象级别的“企业”语言(如 Java)解决方案使您的代码过于复杂。

您的代码应该简单、直观。您不需要委托(delegate)给另一个类来实例化另一个类。

关于python - Python中的工厂模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3511027/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com