Skip to content

Commit

Permalink
Update 2.4-interface.md
Browse files Browse the repository at this point in the history
در این قسمت به یکی از اصول solid یعنی بسته و باز بودن کد اشاره کردم و همچنین یک مثال هم زدم که در کنار مثال موجود(دیتابیس مونگو) مفهوم رو بهتر برای کاربر انتقال میدهد
  • Loading branch information
alireza-fa committed Dec 31, 2023
1 parent 8ed6a8b commit c48f7bb
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 c48f7bb

Please sign in to comment.