💻 آخرین فرصت یادگیری برنامه‌نویسی با آفر ویژه قبل از افزایش قیمت در ۵ آذر ماه (🎁 به همراه یک هدیه ارزشمند )
۰ ثانیه
۰ دقیقه
۰ ساعت
۱ Hossein Ranjbari
پیاده سازی Abstract Factory
جامعه پایتون (وب) ایجاد شده در ۰۹ دی ۱۳۹۹

سلام و احترام؛

یه سوالی که برام پیش اومده این هست که آیا واقعا نیاز هست مانند کدی که استاد برای الگوی 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

 

باز اگر نکته یا سوالی در این مورد داشتید تو همین تاپیک بفرمایید.

محمدعلی رضا ۰۹ دی ۱۳۹۹، ۱۳:۳۲