مرور سریع اصول SOLID
پنج اصل طراحی شیءگرا که کد را قابل نگهداری، توسعه و تستپذیر نگه میدارند.
فهرست بخشها
S، O و L0/3
Single Responsibility، Open/Closed و Liskov Substitution.
csharp\n// بد: هم منطق سفارش هم ارسال ایمیل\nclass OrderService { void PlaceOrder() {...} void SendEmail() {...} }\n
سؤال رایج: «یک دلیل برای تغییر» یعنی چه؟ یعنی اگر منطق ایمیل تغییر کند، کلاس OrderService هم نباید نیاز به تغییر داشته باشد.
csharp\ninterface IDiscount { decimal Apply(decimal price); }\nclass BlackFridayDiscount : IDiscount { ... } // بدون تغییر کد قبلی\n
csharp\n// نقض LSP: مربع نمیتواند جایگزین کامل مستطیل باشد اگر Width/Height جدا تنظیم شوند\n
مثال کلاسیک نقض LSP، رابطهٔ Square/Rectangle است — این مثال را برای مصاحبه آماده داشته باشید.
ارثبری صرفاً برای اشتراک کد، بدون رعایت رابطهٔ «is-a» رفتاری واقعی.
I و D0/2
Interface Segregation و Dependency Inversion.
csharp\ninterface IPrinter { void Print(); }\ninterface IScanner { void Scan(); } // بهجای یک IMachine بزرگ\n
تفاوت DIP با Dependency Injection را توضیح دهید: DIP یک اصل طراحی است، DI یک تکنیک برای پیادهسازی آن اصل.
