-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbuilder-pattern.py
More file actions
60 lines (39 loc) 路 1.21 KB
/
Copy pathbuilder-pattern.py
File metadata and controls
60 lines (39 loc) 路 1.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
from typing import List
from dataclasses import dataclass
@dataclass
class Pizza:
dough: str = None
sauce: str = None
toppings: List[str] = None
class PizzaBuilder:
pizza: Pizza = None
# 牍勳柎鞛堧姅 臧濎泊 氚涭潓
def __init__(self, pizza):
self.pizza = pizza
def set_dough(self, dough: str):
self.pizza.dough = dough
def set_source(self, source: str):
self.pizza.source = source
def set_toppings(self, toppings: List[str]):
self.pizza.toppings = toppings
def get_result(self) -> Pizza:
return self.pizza
class PizzaDirector:
def __init__(self, builder: PizzaBuilder):
self.builder = builder
def chnage_builder(self, builder: PizzaBuilder):
self.builder = builder
def make_good_pizza(self):
self.builder.set_dough("thin crust")
self.builder.set_source("tomato")
self.builder.set_toppings(["hello", "world"])
def get_result(self):
return self.builder.get_result()
def main():
# empty obj
builder = PizzaBuilder(Pizza())
director = PizzaDirector(builder=builder)
director.make_good_pizza()
print(director.get_result())
if __name__ == "__main__":
main()