Farhad Nosrati فرهاد نصرتی
Farhad Nosrati فرهاد نصرتی
خواندن ۳ دقیقه·۲ سال پیش

توضیحات chatGTP در مورد solid .

SOLID :

یک مجموعه‌ی اصول طراحی شیءگرا است که برای ساختاردهی بهتر و قابل گسترش‌تر کردن کد، معرفی شده است. این اصول، به صورت خلاصه به صورت زیر هستند:

  1. Single Responsibility Principle (اصل مسئولیت تکی):

هر کلاس باید فقط یک مسئولیت داشته باشد و باید تنها به یک دلیل برای تغییر مورد نیاز باشد.

  1. Open/Closed Principle (اصل باز/بسته):

کد باید برای تغییرات بسته باشد ولی برای افزودن قابل باز باشد.

  1. Liskov Substitution Principle (اصل جایگزینی لیسکوف):

هر شیء از یک کلاس، باید بتواند به عنوان یک شیء ازکلاس پدرش استفاده شود، بدون اینکه برنامه تغییر کند.

  1. Interface Segregation Principle (اصل جداسازی رابط):

کلاس‌ها نباید از روش‌هایی که نیاز ندارند استفاده کنند و نباید به کلاس‌های دیگر وابسته باشند.

  1. Dependency Inversion Principle (اصل وابستگی معکوس):

باید به جای وابستگی به جزئیات پیاده‌سازی، به ابسترکشن‌ها و رابط‌ها وابسته باشیم و وابستگی‌های بین کلاس‌ها را به صورتی طراحی کنیم که برای تغییرات کمتری در کد نیاز باشد.

اصول SOLID به صورت جداگانه و در کنار یکدیگر، به ما کمک می‌کنند که کدی را را طراحی کنیم که قابلیت گسترش و تغییرات بیشتری داشته باشد و عملکرد بهتری داشته باشد. در ادامه، به توضیح هر یک از این اصول می‌پردازیم:

  1. Single Responsibility Principle:

این اصل بیان می‌کند که هر کلاس فقط باید یک مسئولیت داشته باشد. به این صورت که هر کلاس باید فقط برای یک کار خاص طراحی شود و اگر برای کار دیگری نیاز به تغییرات داشته باشد، باید از آن کلاس جدا شود. به طور مثال، در یک برنامه مدیریت فروشگاه، دو کلاس مجزا برای مدیریت محصولات و مدیریت سفاردهی باید طراحی شوند، به جای آنکه هر دو مسئولیت در یک کلاس قرار داشته باشد.

  1. Open/Closed Principle:

این اصل بیان می‌کند که کد باید برای تغییرات بسته باشد ولی برای افزودن قابل باز باشد. به این صورت که باید بتوانیم قابلیت‌های جدید به برنامه خود اضافه کنیم، بدون اینکه کد قبلی را تغییر دهیم. به طور مثال در یک برنامه بازی، باید بتوانیم شخصیت‌های جدید را به بازی اضافه کنیم، بدون اینکه کد اصلی بازی را تغییر دهیم.

  1. Liskov Substitution Principle:

این اصل بیان می‌کند که هر شیءاز یک کلاس، باید بتواند به عنوان یک شیء از کلاس پدرش استفاده شود، بدون اینکه برنامه تغییر کند. به عبارت دیگر، باید بتوانیم شیء‌های جدید را به برنامه خود اضافه کنیم، بدون اینکه تغییراتی در برنامه اصلی ایجاد شود. به طور مثال، در یک برنامه مدیریت حساب بانکی، باید بتوانیم بدون تغییر کد اصلی، حساب‌های جدید را به برنامه اضافه کنیم.

  1. Interface Segregation Principle:

این اصل بیان می‌کند که کلاس‌ها نباید از روش‌هایی که نیاز ندارند استفاده کنند و نباید به کلاس‌های دیگر وابسته باشند. به عبارت دیگر، باید روش‌هایی که برای کاری لازم نیستند، در کلاس‌ها قرار نگیرند و هر کلاس فقط به آن چیزی که نیاز دارد، وابسته باشد. به طور مثال، در یک برنامه مدیریت فروشگاه، کلاس مدیریت محصولات نباید از روش‌هایی که برای سفارش‌ها نیاز داریم استفاده کند.

  1. Dependency Inversion Principle:

این اصل بیان می‌کند که باید به جای وابستگی به جزئیات پیاده‌سازی، به ابسترکشن‌ها و رابط‌ها وابسته باشیم و وابستگی‌های بین کلاس‌ها را به صورتی طراحی کنیم که برایتغییرات کمتری در کد نیاز باشد. به عبارت دیگر، باید به جای استفاده از قطعات کد و جزئیات پیاده‌سازی، از رابط‌ها و ابسترکشن‌ها استفاده کنیم تا بتوانیم وابستگی‌های بین کلاس‌ها را به صورت مناسبی طراحی کنیم. به طور مثال، در یک برنامه مدیریت سفارش‌ها، باید از رابط‌ها برای ارتباط بین کلاس‌های مدیریت محصولات، مدیریت مشتریان و مدیریت پرداخت‌ها استفاده کنیم.

principle اصلاصول طراحی
https://github.com/nosratifarhad
شاید از این پست‌ها خوشتان بیاید