تصور کن یک آدم همهکاره داری که هم آشپزی میکنه، هم خونه رو تمیز میکنه، هم حسابداری شرکت رو انجام میده. خب، این بنده خدا بالاخره خسته میشه و همه چیز خراب میشه!
اصل مسئولیت یگانه میگه: هر کدوم از این کارها رو بده دست یه متخصص. مثلا آشپزی فقط به آشپز، حسابداری فقط به حسابدار.
در دنیای برنامهنویسی:
هر کلاس فقط یه وظیفه داشته باشه، نه اینکه مثل سوپرمن همه کار کنه و آخرش استرس بگیره و کرش کنه!
فرض کن یه روز فروشگاهت سیب و پرتقال میفروشه. بعد تصمیم میگیری کیوی و موز هم اضافه کنی.
اگه هر دفعه بری کل قفسهها رو بشکافی و از اول درست کنی، مغازهات شبیه سایت در حال بازسازی میشه!
اصل باز-بسته میگه:
کلاسها باید "باز" برای گسترش، ولی "بسته" برای تغییر باشن. یعنی فقط چیزای جدید اضافه کن، قدیمیها رو دست نزن.
فرض کن یه رستوران رفتی و غذا سفارش دادی. پیشخدمت یه کاسه سوپ برات میاره. بعد که میخوری، میبینی توش آشغال ریخته و میگه: "سوپش همینه، یه سبک خاصه!" 😬
تو هم میگی: "اینو کی گفته؟!"
اصل لیسکوف میگه:
هر زیرکلاسی باید بتونه جایگزین والدش بشه بدون اینکه مشتری (یا کدت) گیج بشه و بزنه زیر میز!
فرض کن یه ریموت کنترل داری که 200 تا دکمه داره، ولی تو فقط دکمه روشن و خاموش رو استفاده میکنی. بقیه دکمهها انگار برای زندگی بعدی طراحی شدن!
اصل جداسازی رابطها میگه:
به جای یه ریموت با دکمههای بیکاربرد، یه ریموت خوشگل و جمعوجور طراحی کن که فقط دکمههای لازم رو داشته باشه.
فرض کن خونهات رو برقکار با سیمهای عجیب غریب و مخصوص خودش سیمکشی کرده. حالا اگه بخوای لامپ جدید بذاری، باید خود برقکار رو از سیارهای که الان زندگی میکنه، احضار کنی!
اصل وارونگی وابستگی میگه:
وابستگی به چیزای خاص (مثل اون برقکار خاص) رو کم کن و به جای اون، یه استاندارد کلی (مثل پریز معمولی) استفاده کن تا راحت بتونی تغییرات رو انجام بدی.
خب، حالا هر وقت SOLID رو یاد گرفتی، یاد این مثالها بیفت تا نه تنها بخندی، بلکه بهتر هم یادت بمونه! 😉