واسطه ها یا اینترفیس در سی شارپ

11 دی 1404 - خواندن 4 دقیقه - 59 بازدید



Interface در اصل یک قانون یا قرار داد هست که میتوانند این قرارداد را پیاده سازی و رعایت کنند و مزایایی مثل متحدالشکل شدن کلاس ها و آسان شدن نگهداری برنامه و کاهش وابستگس زا به همراه دارد و به بیان ساده تر میشه گفت که ما با اینترفیس ها میاییم و یک قرار داد میبندیم ومیگیم که کلاسهایی که میخوان از این متد استفاده کنند باید از این قوانین تبعیت کنند

یک اینترفیس یک قرار داد Contract است که مجموعه ای از متدها و پراپرتی ها و رویدادها و ایندکسرها را تعریف میکند که یک کلاس یا Stract باید پیاده سازی کنند

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

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

از سی شارپ 8 به بعد امکان این وجود دارد که برای متدها ما تعریف داشته باشیم

تفاوتها شامل

Abstract

· تعریف و پیاده سازی متدها و بخشهای مختلف هستند

· ارث بری چندگانه رو پشتیبانی نمیکند

· میتوانند سازنده یا Constractor داشته باشند

· میتوانند شامل اعضای Static باشند

· میتوانند شامل انواع مختلف Acces Modifire ها باشند

· به لحاظ Performance خیلی سریعتر هستند

· برای پیاده سازی و اجرای هسته اصلی استفاده میشوند

· یک کلاس فقط میتونه از یک کلاس اننتزاعی استفاده کند

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

· کلاسهای انتزاعی میتونند شامل متدها، فیلدها و ثوابت باشند

· استفاده از : برای استفاده از انتزاع و ارث بری

· میتونیم به صورت کامل و یا جزئی پیاده سازی کنیم یا نکنیم

· برای اعلان ما از Abstractاستفاده میکنیم

Interface

· فقط شامل تعریف متد پراپرتی و رویداد یا ایندکسر هستند

· ارث بری چندگانه رو پشتیبانی میکند

· سازنده نمیتوانند داشته باشند

· نمیتوانند شامل اعضای استاتیک باشند

· اما اینجا همه چیز Publicهستند

· به لحاظ Performance کمی کند هستند چون برای جستجوی متدهای واقعی نیاز به زمان بیشتری دارند

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

· اما اینجا یک کلاس میتونه از چندین کلاس ارث بری کند استفاده کند

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

· اما اینها شامل متدها و پراپرتی ها و ایندکسرها و رویدادها هستند

· اما اینجا از : استفاده میشه و بایدبین اینترفیس ها باید ,بزاریم

· اما اینجا باید به صورت کامل پیاده سازی بشوند

· اما اینجا برای اعلان از Interface استفاده میکنیم

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