سلام و احترام؛
یه سوالی که برام پیش اومده این هست که آیا واقعا نیاز هست مانند کدی که استاد برای الگوی AbstractFactory نوشتن اینقدر خرد شد و یا همینکه بتونیم مفهوم رو پیاده سازی کنیم کافی است مثلا من برای تمرین، این کد زیر رو نوشتم و میخوام بدونم که با اینکه اونقدر ریز نشدم آیا تونستم این الگو رو پیاده سازی کنم یا خیر؟!
from abc import ABC, abstractmethod
class ProductBase(ABC):
@abstractmethod
def detail(self):
pass
@abstractmethod
def price(self):
pass
class Rugs(ProductBase):
def __init__(self, name, price, rug_type):
self.name = name
self._price = price
self.rug_type = rug_type
def detail(self):
return f"name: {self.name}\ttype: {self.rug_type}"
def price(self):
return f"price: {self._price}"
class GiftCard(ProductBase):
def __init__(self, company, value_card):
self.company = company
self.value_card = value_card
def detail(self):
return f"company: {self.company}"
def price(self):
return f"value: {self.value_card}"
if __name__ == '__main__':
r1 = Rugs('homa', 100, 'machine')
r2 = Rugs('atlas', 200, 'handicraft')
g1 = GiftCard('google', 20)
g2 = GiftCard('amazon', 50)
products = [r1, r2, g1, g2]
for product in products:
print(product.detail())
print(product.price())
سلااااااااااااااام و احترام متقابل :)
کدی که استاد نوشتن یه مثال ساده شده و کوچیک شده واقعی بود با پیاده سازی درست.
همین که مفهوم رو پیاده سازی کنید کافیه.
واقعیتش پیاده سازی تون درست نیست. میشه گفت که شما و استاد به یه مساله برخوردید ولی روش های مختلفی انتخاب کردید برای حل مساله. تو پیاده سازی شما از abstraction و یه مقدار ارث بری استفاده شده. اما استاد با abstract factory مساله رو حل کرده.
اگر دوباره قسمت تئوری abstract factory همین جلسه رو ببینید یا قسمت اول مقاله زیر رو بخونید. احتمالا منظورم رو میفهمید:
https://refactoring.guru/design-patterns/abstract-factory
باز اگر نکته یا سوالی در این مورد داشتید تو همین تاپیک بفرمایید.