یکی از اصول دیگر برنامه نویسی شی گرا و اصل سوم SOLID مفهوم ISP یا Interface Segregation Principle می باشد, به این معنی که برای استفاده از اینترفیس ها آنها را باید به اجزای کوچکتری تقسیم کرد. وقتی یک کلاس از یک اینترفیس بزرگ استفاده میکند ممکن است برخی از این متد ها در کلاس مورد نظر قابل استفاده نباشند. اما وقتی یک اینترفیس بزرگ به چند اینترفیس کوچک تقسیم می شود هر کلاس میتواند در صورتی که به اینترفیس خاصی نیاز داشت از آن استفاده نماید. با این امکان اگرچه تعداد اینترفیس ها بیشتر می شوند و ممکن است تکرار رخ دهد اما به دلیل اینکه منطق برنامه ما در اینترفیس ها اجرا نمی شود میتوان این مسئله را نادیده گرفت. در نهایت با رعایت این اصل امکان دیباگ و بررسی کد ها سرعت بیشتری خواهد داشت.

تصویر زیر را در نظر بگیرید :‌

oneInterfaceManyClients

 

اینترفیس VEHICLE برای کلاس های مرتبط با حمل و نقل ایجاد شده است. این در صورتی است که کلاس هایی مانند HighWay و BusStation که از این اینترفیس استفاده میکنند نیازی به متد هایی مانند stopRadio و یا brake ندارند. اصل چهارم SOLID تاکید بر این موضوع دارد که اینترفیس های بزرگ به اینترفیس های کوچک تر تبدیل شوند. تصویر زیر را در نظر بگیرید :

segregatedInterfaces

در تصویر بالا به جای یک اینترفیس بزرگ دو اینترفیس کوچک ایجاد کردیم. گرچه برخی از متد ها تکرار شده اند اما همانطور که در ابتدای موضوع مطرح شد این اینترفیس ها قرار نیست منطق برنامه ما را تشکیل دهند لذا اصل اول SOLID را نقض نمی کند. استفاده از اینترفیس های کوچک به ما کمک میکند تا مشکلات را سریع تر شناسایی کنیم. راحت تر تست بگیریم و راحت تر کد های نوشته شده را درک کنیم.

محمد باقر رستمی

برنامه نویسی رو دوست دارم و از کارم و بیشتر از اون از یادگرفتن لذت می برم. دوست دارم از این طریق برای مردم دنیا مفید باشم. فارغ از رنگ، نژاد، ملیت و جنسیت.

Latest posts by محمد باقر رستمی (see all)

facebooktwittergoogle_pluslinkedin

2 نظر در رابطه با “مفهوم SOLID در برنامه نویسی – ISP

  1. وحید

    خیلی ممنون بابت مطالب آموزنده و خوبتون.
    لطفا بیشتر از این جور آموزش ها بگذارید.
    سری مطالب “برنامه نویس خوب” و طراحی SOLID رو خوندم.
    اگه ابزار هم معرفی کنید (مثلا برای ثبت باگ هاو, تست امنیت وب سایت یا … ) و بیشتر توضیح بدید خیلی بهتر میشه.
    مثلا آقای میلانی در مورد باگ ها یه مطلب نوشته بودند [arashmilani.com/persian/post?id=62] که خیلی خوب بود.
    تشکر♥

    پاسخ
    1. محمد باقر رستمی (نویسنده مطلب)

      خوشحالیم که مطالب به کارتون اومده، سعی میکنیم مطالب مفید تری تولید کنیم!! مطلب آقای میلانی هم جالب و مفید بود. از ایشون هم ممنونم.

      پاسخ

دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

*

*