Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from abc import ABC, abstractmethod
- import random
- class PC:
- def __init__(self) -> None:
- self.Case = ''
- self.Motherboard = ''
- self.CPU = ''
- self.GPU = ''
- self.RAM = ''
- self.Storage = ''
- self.Price = ''
- def __repr__(self):
- return f"New nice and shiny PC: \ncase: {self.Case} \nCPU: {self.CPU} \nMotherboard: {self.Motherboard} \nGPU: {self.GPU} \nRAM: {self.RAM} \nStorage: {self.Storage} \n\nfor just {self.Price}! What a deal!"
- # A - for Abstract, I for Interface
- class ABuilder(ABC):
- def __init__(self):
- self.PC = PC()
- def getPC(self):
- return self.PC
- @abstractmethod
- def PrepareCase(self): pass
- @abstractmethod
- def PrepareMotherboard(self): pass
- @abstractmethod
- def PrepareCPU(self): pass
- @abstractmethod
- def PrepareGPU(self): pass
- @abstractmethod
- def PrepareRAM(self): pass
- @abstractmethod
- def PrepareStorage(self): pass
- @abstractmethod
- def PreparePrice(self): pass
- class WorkstationBuilder(ABuilder):
- def PrepareCase(self):
- self.PC.Case = random.choice(["HP Brother Tower 2", "Lenovo Buisness Korobka 2"])
- def PrepareMotherboard(self):
- self.PC.Motherboard = random.choice(["Gigabyte TRX4 Doska 4.0S+Ultra", "Motherduck x99 Chinese Rice Pot 2.0"])
- def PrepareCPU(self):
- self.PC.CPU = "Threadripper 5995" if "TRX4" in self.PC.Motherboard else "Xeon e5 2670v3"
- def PrepareGPU(self):
- self.PC.GPU = random.choice(['Quadro p4000', 'tesla A100', 'titan X'])
- def PrepareRAM(self):
- self.PC.RAM = f"{random.randint(64, 512)}GB"
- def PrepareStorage(self):
- self.PC.Storage = f'{random.randint(1, 16)} TB SSD + {random.randint(16, 64)} TB HDD'
- def PreparePrice(self):
- self.PC.Price = f"{random.randint(5000, 60000)}$"
- class ForGrandmaBuilder(ABuilder):
- def PrepareCase(self):
- self.PC.Case = random.choice(["IBM PC Generic", "Wooden box"])
- def PrepareMotherboard(self):
- self.PC.Motherboard = random.choice(["Gigabyte 771 Budget MB", "Asus FM2 Budegt MB"])
- def PrepareCPU(self):
- self.PC.CPU = "intel Core 2 Quad" if "771" in self.PC.Motherboard else "AMD FX4100"
- def PrepareGPU(self):
- self.PC.GPU = random.choice(['Radeon HD4550', 'GT 210', 'GT 710'])
- def PrepareRAM(self):
- self.PC.RAM = f"{random.randint(1,2)}GB"
- def PrepareStorage(self):
- self.PC.Storage = f'{random.randint(32, 128)}GB HDD'
- def PreparePrice(self):
- self.PC.Price = f"{random.randint(5000, 600000)}$"
- class GamingPCBuilder(ABuilder):
- def PrepareCase(self):
- self.PC.Case = random.choice(["ASUS ROG STRIX MEGA RGB TOWER", "Open Stand 2.0"])
- def PrepareMotherboard(self):
- self.PC.Motherboard = random.choice(["Gigabyte AM4 Gayming WIFI", "Asus ROG LGA1700 Ultimate"])
- def PrepareCPU(self):
- self.PC.CPU = "Intel i7 12700" if "LGA1700" in self.PC.Motherboard else "AMD Ryzen R7 3700x"
- def PrepareGPU(self):
- self.PC.GPU = random.choice(['RTX 3060', 'GTX 1050', 'GT 710'])
- def PrepareRAM(self):
- self.PC.RAM = f"{random.randint(16, 64)}GB"
- def PrepareStorage(self):
- self.PC.Storage = f'{random.randint(256, 4192)}GB SSD'
- def PreparePrice(self):
- self.PC.Price = f"{random.randint(1500, 1e9)}$"
- class PcVendor():
- def __init__(self, builder: ABuilder) -> None:
- self.builder = builder
- def build(self):
- self.builder.PrepareCase()
- self.builder.PrepareMotherboard()
- self.builder.PrepareCPU()
- self.builder.PrepareGPU()
- self.builder.PrepareRAM()
- self.builder.PrepareStorage()
- self.builder.PreparePrice()
- return self.builder.getPC()
- def Client():
- vendor = PcVendor(WorkstationBuilder())
- Workstation = vendor.build()
- print('\n'+str(Workstation))
- vendorForBabushka = PcVendor(ForGrandmaBuilder())
- Workstation = vendorForBabushka.build()
- print('\n'+str(Workstation))
- vendorForGamers = PcVendor(GamingPCBuilder())
- Workstation = vendorForGamers.build()
- print('\n'+str(Workstation))
- def main():
- Client()
- if __name__ == "__main__": main()
Advertisement
Add Comment
Please, Sign In to add comment