معماری در کاتلین چیست؟ انواع معماری در کاتلین
معماری که با استفاده از آن اپلیکیشن خود را توسعه می دهید درواقع یک الگوی از پیش تعریف شده است که بهتر است قبل از آغاز مرحله توسعه ی برنامه تان آن را ایجاد کرده باشید، در این بخش از مقالات آکادمی نوری قصد داریم به سوال معماری در کاتلین چیست پاسخ دهیم و اشاره ای به انواع معماری در اندروید نیز داشته باشیم.
معماری در اندروید چیست؟
معماری در واقع یک الگو یا نقشه ای است که نوع و مدل ارتباط بین اجزای مختلف برنامه و سازماندهی فایل ها و بخش های مختلف برنامه را به همراه دارد و توسعه اپلیکیشن باید طبق آن پیش برود، وقتی در توسعه اپلیکیشن تان از یک معماری استاندارد استفاده کرده باشید، در نهایت یک اپلیکیشنی ساخته اید که نگهداری آسان تری دارد و راحت تر می توانید به بخش های مختلف آن دسترسی داشته باشید و اگر تغییراتی هم مد نظر دارید بتوانید براحتی تغییرات را در بخش مورد نظر ایجاد کنید.
بیاید قبل از شروع توضیحات درباره ی معماری ها در اندروید، یک اپلیکیشن بدون معماری را تصور کنیم.
وقتی یک اپلیکیشن بدون معماری توسعه می دهیم، هر چقدر هم تلاش کنیم که یک پوشه بندی و کد منظم و مرتب داشته باشیم، باز هم چیزی که مد نظر داشته باشیم را نمی توانیم بدون استفاده از معماری ها توسعه بدهیم.
بنابراین زمانی که می خواهیم در آینده قابلیت جدیدی به اپلیکیشن اضافه کنیم، یا تغییری در اپلیکیشن ایجاد کنیم، پیدا کردن بخش مورد نظر بسیار دشوار تر از زمانی است که از یک معماری استاندارد برای توسعه استفاده می کنیم و پروژه را پیش میبریم، هرچند که وقتی از یک معماری استاندارد استفاده می کنیم دشواری در این زمینه نداریم و به مراتب راحتتر است.
معماری در کاتلین
معماری ها در کاتلین، یکسری اصول کلیدی و حائز اهمیت را تعریف می کنند که اگر بخواهید یک اپلیکیشن اندروید خوب و بهینه داشته باشید، باید با این اصول مطابقت داشته باشد و طبق آن ها توسعه انجام شود.
تمیز نگه داشتن ساختار و کد های اپلیکیشن شما می تواند مقابل بسیاری از مشکلات مرتبط با چرخه حیات یا هرچیزی بایستد و از رخ دادن آن جلوگیری کند؛ مثلا کلاس ها و کد هایی که ربطی به UI (User Interface) یا همان رابط کاربری ندارند را نباید در Activity یا Fragment به کار گرفت.
در ادامه سیستم این امکان را دارد که در هر زمانی Activity یا Fragment و بصورت کلی ویو ها را از بین ببرد، به همین دلیل می بایست Data یا همان داده ها توسط مدل یا کلاس هایی مدیریت شوند که از رابط کاربری و مسائلی که به چرخه حیات برنامه مربوط می شود جدا شده باشند.
معماری توصیه شده
از اینکه همچنان تا به اینجای مقاله معماری در کاتلین با من همراه هستید سپاسگزارم، در این بخش از این مقاله قصد داریم که به یک معماری در اندروید بپردازیم که بهینه تر و استاندارد تر است.
البته باید به این مورد هم توجه داشت که معماری می بایست بعد از آنالیز و بررسی پروژه انتخاب شود که کدام یک از معماری ها، می تواند عملکرد بهتری برای اپلیکیشن به همراه داشته باشد.
معماری که در ادامه می خواهیم از آن بگوییم، معماری است که خود اندروید آن را پیشنهاد کرده است، اما بیایید بفهمیم که تیم اندروید چه معماری را پیشنهاد می کند.
در ابتدا می بایست شناخت کافی از عناصر معماری داشته باشیم، اگر می گویید چرا باید بگویم به این دلیل که همین عناصر هستند که کار های سنگین ما را اجرایی می کنند.
حال قصد دارم که توضیحات بیشتری در مورد این معماری بدهم، اما فکر می کنم بهتر است قبل از توضیحات بیشتر، نام این معماری را بگویم.
معماری کاتلینی که درحال حاضر درباره ی آن قصد داریم بدانیم، معماری MVVM است، MVVM مخفف Model – View – ViewModel است که ساختار های اصلی این معماری را نیز مشخص می کند.
توجه داشته باشید که وقتی می گوییم معماری در کاتلین، منظور از این نیست که این معماری ها تنها در کاتلین کاربرد دارند، چرا که در جاوا پسرعموی کاتلین هم معماری ها را داریم.
این معماری پیشنهادی توسط تیم اندروید، چهار ایتم دارد که هر کدام از این آیتم ها یک نقش خاصی را به عهده دارند، این چهار آیتم شامل ViewModel ، LiveData ، Room ، LifeCycle می شود، ممکن است برخی اوقات موارد دیگری هم باشد، همگی وظایف خاص خود را باید انجام دهند و همچنین با همدیگر کار می کنند تا بتوانند در ساختن یک معماری مستحکم به خوبی عمل کنند.
در ادامه به بررسی بیشتر این معماری در کاتلین می پردازیم.
اگر تصویر بالا را ببینید متوجه می شوید که ما 3 بخش یا عنصر اصلی داریم که هر کدام مسئولیت خودشان را دارند.
اگر می خواهید مفاهیم معماری ها در اندروید را به خوبی آموزش ببینید، آکادمی نوری بهترین آموزش در زمینه تخصصی معماری ها دارد که می توانید با ثبت نام در دوره ی نخبگان معماری اندروید از این آموزش ها بهره مند شوید.
- اولین مورد Activity \ Fragment است که منطق و عملیات خاصی را به همراه ندارد و تنها وظیفه اش این است که ویو ها و رابط کاربری را نمایش می دهد و تعامل با کاربر را نیز مدیریت می کند.
- دومین مورد که یکی از مهم ترین موارد و حائز اهمیت ترین آن ها است VIewModel است که تغییرات و وضعیت رابط کاربری و ویو ها مشاهده می کند و همچنین در صورت ایجاد تغییرات در پیکربندی و دیگر رویداد های چرخه حیات اندروید، ثبات را در برنامه حفظ می کند.
برای مثال اگر چندین فیلد برای وارد کردن اطلاعات داشته باشیم و از ویومدل هم استفاده نکرده باشیم، زمانی که چرخشی در گوشی صورت بگیرد (Rotate screen) دیتا های وارد شده فیلد ها پاک می شوند، توجه داشته باشید که این تنها یک مثال از کاربرد ویو مدل بود و این اتفاق می تواند برای آیتم های دیگر و حالت های دیگری هم رخ بدهد. - Repository سومین موردی است که وظیفه ی آن بطور ساده واکشی داده ها است، این کلاس جزء خاصی از اندروید نیست و یک کلاس ساده است که مشخص می کند اطلاعاتی که قرار است دریافت شود از لوکال است یا سرور که دیتا را با LiveData قابل مشاهده میکند و همچنین دیتا ها در ViewModel قابل دسترس می شوند.
- Room هم یک کتابخانه ی نقشه برداری از SQLite است که استفاده از پایگاه داده را آسان تر می کند.
اندروید قبلا از SQLite پشتیبانی می کرد که باعث می شد زمان زیادی ببرد و کد های زیادی نوشته شود، پس تصمیم گرفت Room را معرفی کند که کار ها را به نسبت SQLite بسیار کم تر کرده است.
یکی از توصیه های دیگری که تیم اندروید برای این معماری در کاتلین داده است این است که این معماری را با کمک تکنولوژی تزریق وابستگی پیاده سازی کنید.
در آخر باید بدانید که معماری در کاتلین شامل مفاهیم بسیاری می شود کخه یادگیری آن ها شاید آن قدر هم آسان نباشد، پس باید سعی کنیم تا مفاهیم کلیدی تر و مهم تر را به خوبی یاد بگیریم و سپس به سراغ دیگر مفاهیم آن برویم، از اینگه تا به اینجای مقاله با من همراه بودید سپاسگزارم.❤