这是装饰图案的例子吗?

2024-06-28 15:04:37 发布

您现在位置:Python中文网/ 问答频道 /正文

这就是我在查看了this答案之后,如何在Python中收集一个decorator模式。如果这不是装饰图案的意思,你能帮我理解吗?你知道吗

在这里,一个比萨饼要加配料。添加浇头(装饰)是使用chain中使用的函数完成的。价格会随着装饰的完成而更新,最后会返回一个带有最终价格的披萨对象,然后再订购。你知道吗

def api_send_order(pizza):
    print('Ordered pizza for '+str(pizza.price)+' with toppings of '+str(pizza.toppings))
    return True

# designed:

class Pizza():
    def __init__(self):
        self.price = 100
        self.toppings = list()
    def order(self):
        return api_send_order(self)

def mushroom_topped(pizza):
    pizza.price += 20
    pizza.toppings.append('mushroom')
    return pizza

def extracheese_topped(pizza):
    pizza.price += 10
    pizza.toppings.append('extra-cheese')
    return pizza

# used as:

mushroom_topped(extracheese_topped(Pizza())).order()

Tags: selfsendapireturndeforder价格装饰