💻 آخرین فرصت یادگیری برنامه‌نویسی با آفر ویژه قبل از افزایش قیمت در ۵ آذر ماه (🎁 به همراه یک هدیه ارزشمند )
۰ ثانیه
۰ دقیقه
۰ ساعت
۱ Deleted
چند سوال در رابطه با دیزاین پترن‌ها و ساختار پروژه‌های شی گرایی
کیوان علی محمدی حل شده توسط کیوان علی محمدی

سلام وقت بخیر

در مورد دیزاین پترن‌ها چند تا سوال داشتم :

۱ - میخواستم بدونم دقیقا تفاوت بین پولی مورفیسم ( چند ریختی ) با دیزاین پترن استراتژی توی چیه ؟ در کل دوتاشون هم مفهومش یکیه و یه مشکلی رو برای ما حل میکنند البته شاید یکم توی پیاده سازیشون تفاوت باشه اما در کل یکی هستند و اینکه وقتی پولی مورفیسم بود چرا استراتژی به وجود اومد ؟ اصلا استراتژی چه مزیتی نسبت به پولی مورفیسم داره ؟

۲ - اگه میشه یه توضیح کوتاهی در مورد دیزاین پترن Observer بدین و اینکه یه مثال real بخوایم از این دیزاین پترن بزنیم چی میتونه باشه ؟؟‌ شما خودتون شده توی پروژه ای از این استفاده کنید ؟ اگر شده توی چه بخشی و برای چه کاری بود ؟ فریمورک‌های معروف نظیر لاراول از همچین دیزاین پترنی استفاده کردند ؟

۳ - توی پیاده سازی Observer بهتره یه قرارداد کلی داشته باشیم توی پروژمون و بخش هایی که از این دیزاین پترن استفاده میکنند از اون پیروی کنند یا نه برای هر بخش جداگانه قرارداد بنویسیم یا اصلا بدون قرارداد فقط پیاده سازیش کنیم ؟

در مورد ساختار پروژه‌ها هم چند تا سوال داشتم :

۱ - راستیتش نمفهمم دقیقا هر دایرکتوری شامل چه بخش هایی باید باشه برای مثال دقیقا چیا باید توی دایرکتوری Services ما قرار بگیره ؟ اصلا چه چیزی میتونه یه service به حساب بیاد ؟

یا مثلا توی دایرکتوری helper چیا باید قرار بگیره ؟

یا حتی مثلا دایرکتور utility دقیقا شامل چه مواردی میشه ؟

تفاوت این ۳ تا چیه ؟ از کجا تشخیص بدیم یه بخشی رو باید توی کدوم یکی از اینا قرار بدیم ؟

من سورس کد‌های مختلف رو که میبینم مثلا یه جایی کلاس View توی سرویس قرار گرفته بود یه جایی helper قرار گرفته بود

۲ - توی بخش‌های مختلف پروژه ما شاید کلی قرارداد ( اینترفیس‌ها یا ابسترکت کلاس‌ها ) داشته باشیم حالا بهتره توی هر بخشی که مینویسیم قراردادش همونجا باشه یا نه همشون مثلا توی یه دایرکتوری به نام Contracts قرار بگیره و از اونا فراخوانی و استفاده بشه

۳ - توی پروژه‌های شی گرایی وردپرسی مثلا میخوایم یکسری function تعریف کنیم و از اونا توی پروژمون استفاده کنیم روش درستش به چه شکله ؟؟ بیایم یه دایرکتوری به اسم functions بسازیم و فانکشن هامون داخل اون تعریف کنیم و مثلا توی init پلاگین یا قالب اونارو include کنیم ؟ یا نه در قالب متد‌های کلاس‌ها فانکشن هامونو قرار بدیم و به صورت استاتیک تعریف کنیم و استفاده کنیم ؟

 

معذرت میخوام اگر زیاد شد

باتشکر

سلام خدمت شما.

۱ − پلی مورفیسم یکی از ویژگی‌های شی گرایی هستش و عملا در سطح مفاهیم بالاتری از الگوی طراحی قرار داره. الگوی طراحی تعیین میکنه که کلاس‌ها چطوری باید با هم رفتار داشته باشن که بتونیم کدی بنویسی که قابلیت توسعه راحت‌تری داشته باشه اما چند ریختی یکی ویژگی کلی از شی گرایی هست .

۲− observer برای جاهایی استفاده میشه که نیاز به notify کردن داره یه مثال ساده اینه که مثلا میایم میگیم اگر کاربر ثبت نام کرد حتما ایمیل و پیامک ثبت نام براش ارسال بشه اینجا مثلا میشه از observer استفاده کرد.  یا مثلا سیستم event listener کاملا از observer استفاده میکنه. در لارول هم به شدت استفاده میشه.

۳ −  هر بخش باید پیاده سازی خودش رو داشته باشه

۱ − این مباحث الان در دوره وردپرس خیلی نمیشه روشون بحث کرد و توی دوره‌های مثل لاراول میشه در مورد کاملا صحبت هم کرد. البته اینم باید بگم این موارد در وردپرس به ندرت استفاده میشه.بهتره روی این مورد برای وردپرس حساس نباشید و سعی کنید در جاهای دیگه مثل لاراول این موارد رو پیاده سازی کنید.

۲− بهتره قرار داد هر بخش با خودش باشه .

۳ − بستگی به پروژه داره که اگر بزرگ باشه بهتره هر بخش رو به صورت یک دایرکتوری جدا در نظر بگیریم و فایل‌های چه functions و چه contracts‌ها همون جا تعریف بشه مگر اینکه اون قرار داد طوری باشه که توسط کدهای دیگه استفاده میشه ازش.

بهترین پاسخ
کیوان علی محمدی ۱۵ شهریور ۱۳۹۸، ۱۷:۱۰