Skip to content

Commit

Permalink
Merge pull request #323 from alireza-fa/main
Browse files Browse the repository at this point in the history
Update 2.4-interface.md
  • Loading branch information
Ja7ad authored Jan 1, 2024
2 parents 8ed6a8b + c48f7bb commit b9784dd
Showing 1 changed file with 6 additions and 1 deletion.
7 changes: 6 additions & 1 deletion content/chapter 2/2.4-interface.md
Original file line number Diff line number Diff line change
Expand Up @@ -295,7 +295,12 @@ Dog walk

1. اینترفیس به ما در نوشتن کدهای ماژولارتر و {{< tooltip text="جدا شده‌‌تر" note="decoupled" >}} بین بخش‌های مختلف کد کمک می‌کند و همچنین می‌تواند باعث کاهش وابستگی بین بخش‌های مختلف کد شود.

**بزارید یک مثال کاربردی بزنیم:**
## کد باید برای تغییر بسته، و برای توسعه باز باشد.
اصل باز و بسته بودن یا اصل Open/Closed به نظر بسیاری، اساس برنامه نویسی شی گرا را تشکیل می‌دهد. رابرت مارتین (Robert C. Martin) که در بین برنامه نویسان به عمو باب (Uncle Bob) مشهور است با عبارت: "مهم‌ترین اصل طراحی شی گرا" از این اصل یاد کرده است. ما با استفاده از اینترفیس ها میتونیم این اصل مهم رو پیاده سازی کنیم.

**بزارید چند مثال کاربردی بزنیم:**
فرض کنید ما چند تا سرویس اس ام اس داریم و در آینده هم ممکنه که سرویس های اس ام اس تغییر کنند و از یک ارائه دهنده دیگه خدمات بگیریم. خب در این صورت ما باید چیکار کنیم که با حذف و اضافه کردن سرویس جدید کد های ما تغییر نکنند؟
میایم یک اینترفیس به اسم مثلا Sms می نویسیم و مشخص میکنیم هر کی که میخواد از این اینترفیس استفاده کنه باید متد send_sms و هر چیزی که نیاز هستش رو پیاده سازیش کنه.

فرض کنید شما یک برنامه نوشتید که یک لایه دیتابیس دارد و داده‌ها، با توجه به کانفیگ، در یکی از دو دیتابیس mongodb یا arangodb ذخیره ‌می‌شود.
حالا اگر ما بیایم در لایه دیتابیس یک اینترفیس قرار دهیم و متدهای مربوط به تعاملات با دیتابیس را ایجاد کنیم، در برنامه‌ای که نوشتیم فقط کافیست متودهای ایترفیس استفاده شود تا با توجه به نوع کانفینگ دیتابیس، پیاده سازی متود اجرا شود.
Expand Down

0 comments on commit b9784dd

Please sign in to comment.