def test(): print("SETUP") house = House('house') house.add('a') house.add('b') house.add('c') house.add('d') house.add('e') house.add('f') house.add('g') house.add('h') house.add('i') house.add('j') print("CONNECTIONS") house.connect('a','b') house.connect('c','d') house.connect('a','e') house.connect('b','e') house.connect('a','c') house.connect('f','c') house.connect('g','d') house.connect('h','b') house.connect('i','c') house.connect('j','a') house.connect('j','h') print("CONNECTIONS COMPLETE") print("SETUP COMPLETE") traverse_house(house)
class HouseBuilder(Builder): """Concrete builder that worh with the concrete object. Implements all abstract methods from Builder""" def __init__(self): self.reset() def reset(self) -> None: self.__house = House() def build_walls(self, value: int = 4) -> None: self.__house.add(f"Walls: {value}") def build_doors(self, value: int = 1) -> None: self.__house.add(f"Doors: {value}") def build_windows(self, value: int = 2) -> None: self.__house.add(f"Windows: {value}") def build_roof(self) -> None: self.__house.add("Roof: 1") def build_garage(self, value: int = 1) -> None: self.__house.add(f"Added {value} garage") def build_swimming_pool(self, value: int = 1) -> None: self.__house.add(f"Added {value} swimming pool") def build_garden(self, value: int = 1) -> None: self.__house.add(f"Added {value} garden") def build_fancy_statues(self) -> None: self.__house.add("Added fancy statues") @property def house(self) -> House: result = self.__house self.reset() return result