پیاده سازی سبد خرید

پرسیده شده
فعالیت 1070 روز پیش
دیده شده 478 بار
0

استاد سلام خسته نباشید

من دارم برای فروشگاهم که بصورت api هستش سبد خرید ایجاد میکنم و میخوام از دیزاین پترن دکریتور استفاده کنم به مشکل خورده   

من کلاسی دارم برای اضافه کردن محصول به سبد خرید و همچنین حذف و یا افزایش تعداد و گرفتن سبد خرید 

حالا برام سوال شده که چطور از این دیزاین پترن استفاده کنم ؟ ممنون میشم توضیحی در مورد این کار بدید. 

فایل پیوست

میثم نصرتی
میثم نصرتی

31 فروردین 00

2
حذف شده

سلام 

 

ببینید دیزاین پترن فساد در مواردی استفاده میشه که شما میخواید برای سرویس‌های پیچیده‌ای که دارید یک اینترفیس ساده داشته باشید، مثلا فرض کنید شما یک سرویس داریم به نام Cost که کارش محاسبه کردن همه هزینه‌ها هستش، مثل هزینه حمل‌ونقل یا مالیات و یا هر موضوع دیگه .. حالا در کنار این شما میخواید یک سرویس هم داشته باشید که کد تخفیف رو براتون محاسبه کنه و اعمال کنه روی سبدخریدتون .. در واقع الان شما ۲ تا سرویس مجزا دارید که قرار هستش با همدیگه یک سرویس بزرگتر رو تشکیل بدن،‌که این سرویس بزرگتر کارش این هست که کلا سبد خرید و پرداخت رو براتون هندل کنه،‌ مهم نیست این ۲ سرویس رو به چه صورت نوشتید ولی به این صورت هستش که شما میاید و برای استفاده از این ۲ سرویس کنار همدیگه اول میرید مثل سبدخرید رو حساب میکنید با هزینه‌هاش ,‘,, بعد میاید داخل سرویس کد تخفیف مقدار اون رو هم حساب میکنید و بعد مقدار کد تخفیف رو از سبد خریدتون کم میکنید .. در واقع زمانی که شما میخواید فردی را بفرستید برای پرداخت چند تا کلاس رو باید صدا بزنید و یه مقدار کارای محاسباتی انجام بدید و در نهایت فرد را بفرستید برای پرداخت .. دیزاین پترن فساد اینجا استفاده میشه که ایدش به اینصورت هستش که اگر کسی بخواد از این ۲ سرویس کنار هم استفاده کنه چون ساختار پیچیده‌ای داره پس طبیعتا استفاده از اون سخت خواهد بود، موردی که این دیزاین پترن مطرح میکنه اینه که شما باید برای این اینترفیس (نحوه استفاده) پیچیده باید یک اینترفیس ساده طراحی کنید که مثلا فقط از یک کلاس استفاده کنید و از اون کلاس فقط یک متد صدا بزنید و همه این کارارو خودش انجام بده ..در واقع سرویس‌های پیچیده‌رو میاره کنار همدیگه و به شما یک اینترفیس خیلی ساده میده که مثلا فقط یک متد از یک کلاس رو صدا میزنید و اون میاد سبد خرید رو حساب میکنه .. بعد میاد کد تخفیف رو هم حساب میکنه و بعد میاد ریدارکت میکنه به صفحه پرداخت.

 و همیشه هم این مورد رو داشته باشید که میخواید از فساد یا هر دیزاین پترن دیگه استفاده کنید اول یکبار این سوال رو از خودتون بپرسید چه مزیتی به من میده که از این دیزاین پترن استفاده کنم؟‌ اگر تونستید برای این سوال جواب‌های واضح و درست بدید از اون دیزاین پترن استفاده کنید. 

فایل پیوست

مهرداد سامی

توسط

مهرداد سامی

3 اردیبهشت 00

حذف شده
منونم استاد بابت توضیحات و وقتی که گذاشتید
میثم نصرتی

4 اردیبهشت 00

حذف شده
سلام استاد وقت بخیر ببخشید یه سوال داشتم در مورد دیزاین پترن فساد، برای پیاده سازی سرویسامون با دیزاین پترن فساد متد های کلاس فسادمون تو هر سرویس باید یکی باشه یا میتونه متفاوت باشه یا باید براساس یه اینترفیس مشترک پیاده بشه؟اگه میتونه متفاوت باشه واسه صدا زدنش باید چطور عمل کنیم؟
Mahdi Rahmani

22 خرداد 00

0
حذف شده

سلام و احترام

میثم جان بی زحمت کدهاتون بزا با هم یه بررسی کنیم تا بهتونم کمکت کنم

فایل پیوست

امیر صالحی

توسط

امیر صالحی

1 اردیبهشت 00

0
حذف شده

سلام 

 

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

فایل پیوست

مهرداد سامی

توسط

مهرداد سامی

1 اردیبهشت 00

0
حذف شده

ممنون استاد و همچنین امیر جان مشکلم حل شد

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

به فرض اگر کلاسی تحت عنوان کارت داشته باشیم و همچنین کلاس برای محاسبه هزینه پست و برای هرکدوم از این کلاس ها یک فساد بسازیم و بخوایم از دیزاین پترن دکریتور استفاده کنیم چطوری نمونه ها رو پاس بدیم به کانسترکتور کلاس ها در حالی که بصورت استاتیک داریم کلاس ها رو صدا میکنیم ؟؟ 

آیا میتونیم تمامی متود های دیگه کلاس هارو از فساد استفاده کنیم و بصورت استاتیک صدا بزنیم و زمانی که میخوایم هزینه نهایی رو محاسبه کنیم و از دکریتور استفاده کنیم از کلاس ها نمونه جدید بسازیم ؟؟ این راه حل درسته یا راه حل دیگه ای هست ؟

عذر میخوام این رو اینجا مطرح میکنم میدونم دوره ای که دارم پرسش مطرح میکنم در اون php هستش اما برام سوال شده ممنون میشم جواب بدین

فایل پیوست

میثم نصرتی

توسط

میثم نصرتی

1 اردیبهشت 00

0
حذف شده

سلام و احترام

facade توی لاراول از همون مجیک متد __callstatic استفاده میکنه و به عنوان خروجی تو این متد به شما یه instanceی از همون کلاس رو بهت میده، شما میتونی از همون instance استفاده کنی برای این دیزاین پترن، مثلا یه متد بسازی به اسم getInstance که static هستش و صداش بزنیو نمونه رو ازش بگیری

فایل پیوست

امیر صالحی

توسط

امیر صالحی

2 اردیبهشت 00

حذف شده
سلام امیرجان ممنون از پاسخت اره به ذهنم رسید چنین کاری انجام داده بشه اما میخواستم بدونم آیا این روش اصولیه ؟
میثم نصرتی

2 اردیبهشت 00

جلسه پیاده‌سازی سبد خرید با Decorator - قسمت سوم