【发布时间】:2020-05-26 15:47:50
【问题描述】:
我有 4 个类来处理大型项目的逻辑。我有客户购买的Product,我必须向他们收费。然而,这些产品的价格根据许多变量变化很大。我创建了一个处理产品定价的PriceGenerator 类,一个检查“产品”是否仍然可用的Inventory 类和一个包含总账单的“产品”列表的“购物车”类,如果客户购买了许多“产品”
Class PriceGenerator:
def get_price(*args)
Class Product:
def prod_bill()
Class Inventory:
def get_inventory(*args)
Class Cart:
self.list_product = [product1, product2, product3,...]
def cart_bill(*args)
我的第一个选择:
pg = PriceGenerator()
pd = Product()
inv = Inventory()
cart = Cart()
我可以将 PriceGenerator 和 Inventory 作为 Cart 的参数传递
def cart_bill(pg, inv, amount):
bill = 0
for prod in self.list_product:
px = prod.prod_bill(pg)
bill_p = px * min(amount, inv.get_inventory(product_args))
bill += bill_p
显然,随着Product 中方法数量的增加,跟踪您必须传递的所有参数变得非常复杂。您将PriceGenerator 和Inventory 传递给Cart,然后将它们传递给产品prod.prod_bill(pg),所有这些嵌套的依赖关系在传递所有对象时都非常麻烦,并且使代码更加复杂。
我可以调用 pg 和 inv 而不将其作为参数传递,例如在 Product 中作为全局变量
def produce_bill(self):
price = pg.get_price(product_args)
inventory = inv.get_inventory(product_args)
但我真的不喜欢不知道方法所需的类/参数是什么。
随着项目的发展,您会建议什么设计模式?
【问题讨论】:
标签: python-3.x design-patterns