اصول SOLID مجموعهای از اصول طراحی شیگرا هستند که توسط رابرت مارتین (عضو هیئت مدیره Agile Alliance) معرفی شدهاند. این اصول به توسعهدهندگان کمک میکنند تا کدی انعطافپذیر، قابلگسترش و آسان برای نگهداری بنویسند. در این مقاله، نحوه کاربرد این اصول در طراحی برنامههای اندروید را بررسی خواهیم کرد.
این اصل میگوید که هر کلاس باید تنها یک مسئولیت داشته باشد و هر تغییر در آن کلاس باید منحصراً مربوط به آن مسئولیت باشد. در اندروید، میتوانید از این اصل برای جدا کردن منطق کسبوکار از رابط کاربری، جداسازی وظایف ارتباط با دادهها از سایر وظایف، و ایجاد کلاسهای با مسئولیتهای مشخص استفاده کنید.
طبق این اصل، واحدهای نرمافزاری باید برای گسترش باز و برای تغییر بسته باشند. در اندروید، میتوانید از الگوهای طراحی مانند استراتژی، دکوریتور و ... برای رعایت این اصل استفاده کنید. به این ترتیب، میتوانید رفتار برنامه را بدون تغییر در کد موجود گسترش دهید.
در این مثال، میتوانیم شکلهای جدید را با پیادهسازی رابط Shape
اضافه کنیم، بدون نیاز به تغییر در کلاس ShapeRenderer
.
این اصل میگوید که زیرکلاسها باید بتوانند جایگزین کلاس پایه شوند، بدون اینکه رفتار برنامه تغییر کند.
در اندروید، باید دقت کنید که زیرکلاسها رفتار کلاس پایه را به گونهای تغییر ندهند که با قراردادهای تعریف شده در کلاس پایه ناسازگار باشد.
در این مثال، ElectricVehicle
میتواند جایگزین Vehicle
شود، زیرا رفتار startEngine
را به گونهای پیادهسازی کرده است که با قرارداد تعریف شده در کلاس پایه سازگار است.
این اصل میگوید که واحدهای سطح بالا نباید به واحدهای سطح پایین وابسته باشند، بلکه هر دو باید به مفاهیم انتزاعی وابسته باشند. در اندروید، میتوانید از الگوهای طراحی مانند Factory و تزریق وابستگی یا استفاده از کتابخانه هایی مانند (Dagger, hilt, koin) برای رعایت این اصل استفاده کنید.
در این مثال، کلاس DataManager
به رابط NetworkClient
وابسته است، نه به پیادهسازی خاص آن (HttpClient
). این امر به ما امکان میدهد در آینده پیادهسازیهای دیگری از NetworkClient
را جایگزین کنیم، بدون نیاز به تغییر در DataManager
.
هدفم از نوشتن این مقاله این بود که درک بهتری از کاربرد اصول SOLID در طراحی برنامههای اندروید داشته باشید. این اصول به شما کمک میکنند تا کد انعطافپذیرتر، قابل گسترشتر و آسانتر برای نگهداری بنویسید.
البته پیاده سازی ها توی پروژه های واقعی به این شکل نیست و شما باید بیشتر در مورد نحوه پیادی سازی ها مطالعه کنید این مقاله بیشتر هدفش اینه شما را به صورت مفهومی با اصل SOLID آشنا کنه
ممنون از زمانی که گذاشتین :))
خدانگهدارتون