شما به این ویدیو دسترسی ندارید
دیزاین پترن factory این امکان رو به ما میده که بتونیم superclass بسازیم که مسئول ساخت object باشه و به subclass اجازه بدیم که بتونن نوع آبجکتی که ساخته میشه رو تغییر بدن
پیش نیاز:
شما به این ویدیو دسترسی ندارید
دیزاین پترن factory این امکان رو به ما میده که بتونیم superclass بسازیم که مسئول ساخت object باشه و به subclass اجازه بدیم که بتونن نوع آبجکتی که ساخته میشه رو تغییر بدن
پیش نیاز:
سلام و خسته نباشید. راستش من نفهمیدم چرا باید از این دیزاین پترن استفاده کنیم وقتی میتونیم همچین کدی رو بجاش بزنیم؟
class Json:
def edit(self, file):
return f'Working on {file} Json ...'
class Xml:
def edit(self, file):
return f'Working on {file} Xml ...'
def client(file: str, format: str):
formats = {
'json': Json,
'xml': Xml,
}
result = formats[format]()
return result.edit(file)
print(client('show', 'json'))
ارسال نظر
سلام
خب این چیه نوشتی؟ :/
توی این کد چه دلیلی داشته که از کلاس استفاده کردی؟ هیچ استفاده از کلاسهای نکردی.
دیزاین پترنها برای زمانی هستند که کد بزرگی دارید.
سلام وقت شما بخیر.
امیدورام سلامت تندرست باشید.
حقیقت بنده بیش از یک ماه پیش اکانت ویژه تهیه کرده بودم. و به علت قطعی اینترنت هفته های گذشته نتونستم این دوره رو بگیرم. چون سایت برام باز نمیشد. امروز متوجه شدم سایت باز میشه.
ایا امکان تمدید اکانت ویژه بهصورت رایگان بخاطر قطعی ها اخیر میسر هست؟
ممنون میشم بنده رو راهنمایی کنید.
با تشکر
ارسال نظر
سلام
بهم ایمیل بزن
سلام
توی مثال اول (که از abstract استفاده نشده) توی متد edit (کلاس B) اخرش اینو return میکنه:
return edit(file)
این قسمت نباید خود edit رو ریترن کنه؟
اخه انگار اینجوری داره دوباره متد رو صدا میزنه.
ارسال نظر
سلام و خیلی ممنون
ممنون میشم اگر لطف کنید و مابقی دیزاین پترن ها رو هم تدریس کنید
مثله همیشه عالی بودی
ارسال نظر
در کال ادیت، حتی نیاز به متغییری به اسم پروداکت هم نداریم!
مستقیم پشت سر هم ریترنش میکنیم:
def _call_edit(self):
return self.make().edit()
الان این کد همون نتیجه رو میده!
راستی درباره ی صدا زدن متود ها پش سر هم اگر یک ویدئو بسازی خیلی عالی میشه. من بصورت تجربی میدونستم کار میکنه ولی علت دقیقش رو هنوز نمیدونم.
ارسال نظر
خوانایی کد رو فدای کوتاه بودن نکن
سلام امیر
در قسمت کریتور، چه نیازی بود که بیای بریزی داخل ریزالت و بعد ریترن کنی ریزالتو!!!
خب درجا متود ادیت داخل متود پروداکت رو ریترن کنیم دیگه:
def _call_edit(self):
product = self.make()
# result = product.edit()
# return result
return product.edit()
فکر نکنم به مشکلی منطقی برخورد کنیم.
من تست کردم و همه چی درست کار میکرد.
ارسال نظر
سلام
بله. حق با شماست
ارسال نظر