چند سوال در رابطه با دیزاین پترن ها و ساختار پروژه های شی گرایی

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

سلام وقت بخیر

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

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

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

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

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

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

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

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

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

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

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

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

 

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

باتشکر

فایل پیوست

Deleted
Deleted

14 شهریور 98

0
حذف شده

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

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

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

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

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

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

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

فایل پیوست

کیوان علی محمدی

توسط

کیوان علی محمدی

15 شهریور 98

جلسه آشنایی با interface