![mvp-cover-elecomco-com](https://elecomco.com/wp-content/uploads/2022/12/mvp-cover-elecomco-com.png)
پروژه اپلیکیشن خبری با پنل مدیریت تحت وب
سطح دوره : پیشرفته
هزینه ثبت نام در دوره
۲,۰۰۰,۰۰۰ تومان
۱,۸۰۰,۰۰۰ تومان
توضیحات کلی دوره آموزش معماری mvp با rxjava در اندروید :
پروژه ساخته شده در این دوره یک اپلیکیشن خبری به همراه پنل مدیریت تحت وب، با امکانات کامل میباشد که سورس آن بلافاصله بعد از ثبت نام در دوره در اختیار دانشجویان عزیز قرار میگیرد.
این دوره در سطح حرفه ای آموزش داده میشود و پیش نیاز این دوره فقط و فقط دوره آموزش برنامه نویسی اندروید با جاوا در همین سایت میباشد.
امکانات پروژه ساخته شده در این دوره یک پنل مدیریت تحت وب برای کنترل تمام بخش های پروژه خبری و تکنولوژی های به کار رفته در این دوره RXJava، رتروفیت، دیتابیس روم و بسیاری موارد دیگر میباشد. از آنجایی که در دوره آموزش برنامه نویسی اندروید با جاوا در ۲۰۰ جلسه به صورت جامع و کامل ساخت برنامه های اندرویدی را آموزش داده ایم، بدیهی است با عدم شرکت در پیش نیاز دوره هیچ مسوولیتی برای یادگیری شما نخواهیم داشت.
دمو دوره آموزش معماری mvp با rxjava در اندروید
home_repair_serviceتجهیزات به کار رفته برای ضبط ویدیوهای آموزشی
میکروفون یقهای Sennheiser مدل EW 112P G4
![sennheiser_ew112p_g4-elecomco-com میکروفون سنهایزر ew112-g4](https://elecomco.com/wp-content/uploads/2022/05/sennheiser_ew112p_g4-elecomco-com.jpg)
این میکروفون برند سنهایزر و ساخت کشور آلمان میباشد. صدای تولید شده توسط این میکروفون کاملا شفاف و به دور از صداهای محیط اطراف و نویز محیط میباشد. این میکروفون که از نوع کاندنسر با کپسول تک وجهی با بازه فرکانس ۱۲ کاناله است، برای گزارش و ضبط های میدانی کاملا ایده آل بوده و مجهز به میکروفن یقه ای چند جهته ی نامرئی ME 2-II می باشد و برای بازتولید صدای سخنرانی به صورت طبیعی طراحی شده است.
در هر فضایی و در هر حالتی صدایی با کیفیت حرفه ای را به شما ارائه خواهد داد. سری بی سیم G4 از سنهایزر، از همان تکنولوژی پیشرفته ای که در استودیوهای تلویزیونی و سالن های کنفرانس بزرگ استفاده می شود بهره میبرد و چنین کیفیت فوق العاده ای را در اختیار شما قرار می دهد. بیشتر استفاده کنندگان پرسنل صدا و سیما، برگزار کنندگان سالن های بزرگ همایش و غیره میباشند.
با توجه به اهمیت بالای کیفیت صدا در ویدیوهای آموزشی کلیه دوره های سایت ما از تاریخ ۱ مهر ۱۴۰۰ با این میکروفون ضبط شده اند.
کارت صدا Creative Sound Blaster GC7
![creativeSoud-blaster-GC7-elecomco-com کارت صدا کریتیو](https://elecomco.com/wp-content/uploads/2022/05/creativeSoud-blaster-GC7-elecomco-com-700x297.jpg)
برای حفظ کیفیت صدای ضبط شده با میکروفون سنهایزر و استفاده از آن بر روی لپ تاپ، از کارت صدای با کیفیت و فوق العاده استفاده شده است که به راحتی بتوان بر روی نرم افزار بالاترین کیفیت صدای تولید شده با میکروفون را در خروجی داشته باشیم.
ترکیب میکروفون سنهایزر با کارت صدا کریتیو صدای شفاف و بینظیری تولید میکند و به راحتی توسط نرم افزار قدرتمند ضبط از صفحه نمایش (Camtasia) قابل شناسایی بوده و خروجی کاملا شفاف و بدون نویز را خواهیم داشت.
به جرات میگوییم که حتی در ضعیف ترین سیستم های پخش و حتی با اسپیکرهای از رده خارج، با این تجهیزات بهترین کیفیت صدا را خواهید داشت و بدون هیچ نگرانی از کیفیت صدای ویدیوها، از دوره های آموزشی استفاده میکنید. رضایت شما از محصولات آموزشی ما بیشترین اهمیت را دارد، پس هیچ نگرانی از جهت کیفیت محصولات آموزشی ما نداشته باشید.
کیفیت ویدیوها
![video-full-hd-elecomco-com ضبط با کیفیت full-hd](https://elecomco.com/wp-content/uploads/2022/05/video-full-hd-elecomco-com.jpg)
با توجه به اینکه کیفیت مطلوب آموزش ها برای ما اهمیت بالایی دارد، تمام ویدیوهای آموزشی سایت الکامکو با بالاترین کیفیت یعنی ۱۰۸۰p ضبط شده اند. کیفیت بالای تصویر در ویدیو سبب میشود تا دانشجویان عزیز کدها و تصاویر به کار رفته برای آموزش را بهتر مشاهده کنند و هیچ نگرانی از این بابت نداشته باشند.
آموزش پروژه محور
پشتیبانی رایگان : ۱ ماه
مشاهده : بلافاصله پس از پرداخت
وضعیت دوره : تکمیل شده
درصد پیشرفت دوره۱۰۰%
معماری MVP چیست؟
هر برنامه نویسی دوست دارد تا از انجام کارهای تکراری و غیرضروری جلوگیر کند و وقت خود را روی حل مشکلات و چالشهای جدید بگذارد. همینطور توسعه و نگهداری نرم افزارهایی که از یک الگو یا معماری خاص پیروی نمیکنند، مشکل است. وجود معماریهای مختلفی مثل MVC، MVP یا MVVP کمک میکنند پیچیدگیهای برنامه تا حد ممکن کم شوند و فرآیند توسعه نرم افزار افزایش پیدا کند. در این صفحه به مغرفی mvp architecture می پردازیم.
مخفف MVP چیست؟
مدل مدل-ویو-کنترلر یا MVP Model–view–presenter (MVP) یکی از معماری های نرم افزاری است که در طراحی و ساخت اپلیکیشنها و سرویسهای مختلف مورد استفاده قرار میگیرد و بیشتر برای ساخت رابط کاربری (UI) مورد استفاده قرار میگیرد.
معماری نرم افزار چیست؟
معماری یک نرم افزار به تعریف ساختار بندی کلی سیستم و ارتباط آن با سایر بخشها اشاره دارد. هر معماری شامل الگوهای (Pattern) مختلفی است که با توجه به نوع پیاده سازی نرم افزار انتخاب میشوند. پترن هایی مانند MVP به نوعی زیرشاخه معماری نرم افزار محسوب میشوند. این الگوها مانند یک نقشه راه برای توسعه دهنده عمل میکنند و اجازه نمیدهند که او گرفتار تکرار شود. انتخاب معماری نرم افزاری که قصد پیاده سازی آن را دارید باید به گونه ای باشد که نیازمندیهای فنی و عملیاتی سیستم را به خوبی تامین کند.
معماری نرم افزاری MVP چیست؟
معماری MVP الگوی معماری جداگانه ای برای پیاده سازی رابط کاربری نرم افزار دارد که مدل-ویو-پرزنتر (Model-View-Presenter) نام دارد. در این معماری، بخش ارائه دهنده (Presenter) مسئولیت ارائه منطق را به عهده دارد و به دلیل دخاالت داشتن در سازماندهی عملیات سطح بالای سیستمی، فارغ از یک الگوی طراحی، یک الگوی معماری محسوب میشود. به طور کلی این الگوی معماری به کاهش پیچیدگیهای پیاده سازی بخش رابط کاربری نرم افزارها کمک زیادی میکند. مدل MVP به ۳ بخش کلی زیر تقسیم میشود:
- Model: در نقش یک واسط عمل میکند و داده هایی که باید در رابط کاربری نمایش داده شوند را تعریف میکند. این لایه همه داده های اپلیکیشن را درون کلاس های ساده نگهداری میکند. همه دیتایی که در نرم افزار ما استفاده میشود باید در لایه Model مدیریت شود. مانند داده هایی که از شبکه، دیتابیس، حافظه های مختلف و منابع دیگر می آیند. در حقیقت فرق زیادی بین لایه Model در این معماری و MVC وجود ندارد. وظیفه لایه Model بصورت کلی استفاده از API، کش کردن داده ها، مدیریت دیتابیس و غیره است.
- View: دادهها را نمایش میدهد و دستورات کاربر را به Presenter ارسال میکند. این لایه شامل همه اجزای سازنده رابط کاربری اپلیکیشن ما است. یعنی همه اکتیویتی ها و فرگمنت ها در لایه View قرار میگیرند. وظیفه این لایه نمایش داده های مختلف و تغییرات آن ها به کاربر است. در معماری MVP، لایه View بصورت مستقیم با لایه Presenter در ارتباط است. یعنی همه اکشن های کاربر را به اطلاع Presenter میرساند و از همان لایه دستور میگیرد که چه داده هایی را باید به کاربر نمایش بدهد.
- Presenter: مثل یک پل بین Model و View است. Presenter دادههای مختلف را از مخازن (Model) بازیابی میکند و آنها را برای نمایش در View آماده میکند. لایه Presenter: لایه Presenter در این معماری واسط بین لایه های View و Model است. یعنی لایه View همه اتفاقات را به این لایه خبر میدهد و از آن دستور میگیرد که چه داده هایی را باید نمایش بدهد. از طرفی هم لایه Presenter به لایه View دستور میدهد که کدام داده ها را باید ذخیره کند و چه داده هایی را باید در اختیار آن قرار بدهد. در این معماری، لایه Presenter برای اتفاقاتی که در جواب تعاملات کاربر رخ میدهد (یعنی در لایه View) تصمیم گیری میکند.
۳ بخش بالا به زبان ساده این کار را انجام میدهند:
- Model: چه چیزی را نشان دهم؟
- View: چطور آن را نمایش دهم؟
- Presenter: به مدل چه فرمتی برای نمایش بدهم و رویدادهای کاربر مثل ورودی دادن را چطور مدیریت کنم؟
کاربردهای معماری نرم افزاری MVP چیست؟
کاربرد معماری mvp برای توسعه اپلیکیشنهای مبتنی بر اندروید امکان استفاده از معماری و الگوهای زیادی وجود دارد اما MVP کمک میکند پروژههای بزرگتر را با دردسر کمتری به اتمام برسانید. در این معماری بخش Model وظیفه مدیریت منطق برنامه و کار با داده را به عهده دارد. این بخش در اپلیکیشنهای اندروید توسط لایه دسترسی به داده مانند APIهای پایگاه داده اجرا میشود.
View نیز رابط اتصالی یبن کاربران و Presenter است. بخش P که عامل متمایز کننده این معماری از معماری MVC است رابطی بین بخش ویو و کاربر میباشد. این قسمت وظیفه دارد با دریافت درخواست کاربر و ارائه آن به بخش مدل، قسمت ویو را آپدیت کرده و نتایج درخواست را به کاربر نشان بدهد.
کاربرد معماری mvp در اندروید قابلیت نگهداری و تست پذیری را فراهم میکند.
همچنین کاربرد معماری mvp برای توسعه دهندگانی است که با جداسازی بخش ویو بتوانند تست واحد (Unit Testing) را به آسانی انجام دهند.
همچنین بخوانید: روش های درامدزایی از برنامه نویسی
پیاده سازی معماری MVP در زبانهای برنامه نویسی مختلف
زبانهای مختلفی وجود دارند که به شما اجازه میدهند معماری MVP را در برنامههای خود استفاده کنید. برای مثال در زبان PHP، فریم ورک Nette از معماری MVP پشتیبانی میکند. در جاوا هم فریم ورک هایی مثل JFace و Vaadin این قابلیت را دارند. همینطور در تکنولوژی دات نت، میتوان معماری MVP را به کار گرفت. MVP محبوبیت زیادی در اندروید دارد و بسیاری از برنامه نویسان اندروید از این الگو استفاده میکنند.
چرا باید از معماری MVP استفاده کنیم؟
در برنامه نویسی اندروید و ساخت اپلیکیشن های اندرویدی، اکتیویتی ها رابط کاربری و مکانیزم های دسترسی به داده را بصورت خیلی نزدیک در کنار یکدیگر نگه داری میکنند که این مسئله باعث به وجود آمدن مشکل های زیادی میشود. برای اینکه یک اپلیکیشن بتواند مراحل نگهداری و توسعه راحت تری داشته باشد، باید لایه های جداگانه ای در پروژه داشته باشیم.
دلیل جداسازی لایه ها این است که فرض کنید ما تا امروز داده های اپلیکیشن را از دیتابیس داخلی تامین میکردیم، اما از فردا باید این اطلاعات را از سرور های آنلاین بگیریم. اگر لایه ها جداسازی نشده باشند چجوری باید این کار را انجام بدهیم؟ در اینصورت باید همه کارها را دوباره از اول انجام بدهیم.
معماری MVP لایه View را از منبع داده جدا میکند. همچنین تقسیم پروژه به سه لایه مختلف به ما کمک میکند که بتوانیم هرکدام از آنها را جداگانه تست کنیم. زیرا با استفاده از معماری MVP میتوانیم منطق اپلیکیشن را از اکتیویتی خارج کنیم و اینکار تست کردن آنها را راحت تر میکند.
مزایا و معایب معماری ام وی پی چیست؟
مزایای معماری MVP چیست؟
مزایایی که با پیاده سازی معماری MVP (یا معماری های مشابه مانند MVC، MVVM، MVVC) در پروژه به وجو می آیند این موارد هستند:
- جداسازی واضح مسئولیت ها بین کامپوننت های مختلف. این جداسازی باعث درک بهتر کدها و نگهداری راحت تر آنها میشود.
- ماژولار شدن پروژه. ماژولار بودن به ما اجازه میدهد که مثلا پیاده سازی لایه View را به کلی تغییر بدهیم و رابط کاربری اپلیکیشن را تعویض کنیم، بدون اینکه به بقیه قسمت های اپلیکیشن کاری داشته باشیم.
- تست پذیری راحت تر. از آنجایی که مرز های مشخصی بین کامپوننت های مختلف وجود دارد، تست کردن هر کامپوننت بصورت ایزوله راحت تر میشود (مثلا با Mock کردن بقیه کامپوننت ها).
معایب معماری MVP چیست؟
یکی از ریسک هایی که هنگام استفاده از معماری MVP وجود دارد، این است که معمولا فراموش میکنیم که Presenter همیشه به لایه View چسبیده است. لایه View هم معمولا یک اکتیویتی است، پس اتفاقات زیر ممکن است رخ بدهد:
- اکتیویتی میتواند در تسک هایی طولانی Leak شود.
- ممکن است اقدام به آپدیت اکتیویتی هایی کنیم که قبلا از بین رفته اند.
برای نکته اول، اگر مطمئن باشید که تسک های پس زمینه شما در مدت زمانی کوتاهی تمام میشوند نگرانی زیادی وجود نخواهد داشت. اما دومین مورد شاید دردسر های بیشتری ایجاد کند. یعنی فرض کنید یک درخواست به سرور فرستادید که ۱۰ ثانیه طول میکشد تا کامل شود و کاربر در ثانیه ۵ اکتیویتی را ببندد. این مسئله باعث Crash شدن اپلیکیشن میشود. راه حل این مسئله از بین بردن همه تسک های پس زمینه در مرحله onDestroy است.
پیاده سازی MVP در اندروید چگونه است؟
برای آموزش MVP در اندروید ابتدا باید بدانید معماری MVP چیست! الگوی (MVP (Model View Presenter از معماری شناخته شده (MVC (Model View Controller مشتق شده است و یکی از محبوب ترین الگوها برای سازماندهی لایه Presenter در برنامه های Android است. با ما همراه باشید تا با ذکر یک مثال شما را با پیاده سازی MVP در اندروید آشنا کنیم.
پیاده سازی MVP در اندروید : معماری MVP اجازه می دهد تا لایه Presenter از منطق جدا شود، به طوری که همه چیز در مورد نحوه عملکرد UI از نحوه نمایش آن بر روی صفحه نمایش جدا است. در حالت ایده آل ، الگوی MVP به این نتیجه می رسد که همان منطق ممکن است دارای دیدگاههای کاملاً متفاوت و قابل تعویض باشد.
اولین چیزی که باید روشن شود این است که MVP به خودی خود یک معماری نیست ، بلکه تنها مسئولیت لایه Presenter را بر عهده دارد. این یک ارزیابی بحث برانگیز بوده است ، بنابراین می خواهم آن را کمی عمیق تر توضیح دهم.
ممکن است متوجه شوید که MVP به عنوان یک الگوی معماری تعریف شده است زیرا می تواند بخشی از معماری برنامه شما باشد ، اما این را در نظر نگیرید که فقط به دلیل استفاده از MVP ، معماری شما کامل است. MVP فقط لایه Presenter را مدل می کند اما اگر می خواهید یک برنامه انعطاف پذیر و مقیاس پذیر داشته باشید ، بقیه لایه ها هنوز هم نیاز به یک معماری خوب دارند.
مزایای آموزش MVP در اندروید چیست و چرا باید از این معماری استفاده کنیم؟
- خیلی از شرکت ها برنامه نویسانی را استخدام می کنند که با پیاده سازی MVP در اندروید آشنایی داشته باشند و اگر در سبد آموزش برنامه نویسی اندروید خود این موضوع را یاد بگیرید، می توانید با خیلی از شرکت ها همکاری کنید که هم برای شما درآمد زایی دارد و هم شرکت ها می توانند از توانایی شما استفاده کنند.
- بعد از آموزش MVP در اندروید ، به عنوان مدیر پروژه براحتی می توانید بدون توضیحات اضافه کار گروهی راحتی با همکاران خود داشته باشید.
- بعد از اینکه پروژه خود را با معماری MVP نوشتید، براحتی می توانید آن را تغییر و آپدیت کنید
- با پیاده سازی MVP در اندروید در پروژه های بزرگ می توانید تست نویسی را راحت تر انجام دهید
- در Android مشکل ما ناشی از این واقعیت است که Activity های Android با مکانیزم های دسترسی UI و مکانیزم دسترسی به داده ها نزدیک است. ما می توانیم نمونه های افراطی مانند CursorAdapter را پیدا کنیم ، که آداپتورها را که بخشی از view هستند ، ترکیب کنند با cursors ، چیزی که باید به اعماق لایه دسترسی به داده ها منتقل شود.
- برای اینکه یک برنامه به راحتی قابل توسعه و نگهداری باشد ، باید لایه های کاملاً جدا از هم تعریف کنیم. فردا چه کاری انجام میدهیم اگر به جای بازیابی همان داده ها از یک پایگاه داده ، بخواهیم آن را از یک سرویس وب دریافت کنیم؟ ما مجبوریم کل view های خود را دوباره از اول بسازیم.
- معماری MVP در واقع لایه view را از منبع داده های ما مستقل می کند. ما برنامه را حداقل به سه لایه مختلف تقسیم می کنیم، که به ما امکان می دهد آنها را بطور مستقل تست کنیم. با MVP بیشتر منطق را از Activity خارج می کنیم تا بتوانیم بدون استفاده از تست های ابزار دقیق آن را آزمایش کنیم
ایجاد یک پروژه ساده برای درک بهتر پیاده سازی MVP در اندروید :
یک پروژه جدید در اندروید استودیو ایجاد میکنیم . نام لی اوت را به activity_login تغییر میدهیم . روت لی اوت را به LinearLayout تغییر داده و درون آن ۲ EditText و یک TextView به صورت زیر میگذاریم :
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:orientation="vertical" android:gravity="center_vertical" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".activities.LoginActivity"> <EditText android:id="@+id/etUserName" android:layout_marginRight="25dp" android:layout_marginLeft="25dp" android:hint="Enter UserName ..." android:inputType="textPersonName" android:layout_width="match_parent" android:layout_height="wrap_content" /> <EditText android:id="@+id/etPassword" android:layout_marginTop="25dp" android:layout_marginRight="25dp" android:layout_marginLeft="25dp" android:hint="Enter Password ..." android:inputType="textPassword" android:layout_width="match_parent" android:layout_height="wrap_content" /> <TextView android:id="@+id/tvLogin" android:padding="12dp" android:textSize="22sp" android:textColor="#fff" android:textStyle="bold" android:background="@color/colorPrimaryDark" android:text="LOGIN" android:gravity="center" android:layout_marginTop="25dp" android:layout_marginRight="25dp" android:layout_marginLeft="25dp" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout>
سه پکیج جدید با نام های model ، view و presenter در پروژه ایجاد میکنیم . یک پکیج دیگر به نام activities نیز ایجاد کرده. اکتیویتی اصلی را به LoginActivity تغییر نام داده و درون پکیج activities میگذاریم .حال باید ۲ اینترفیس در پکیج های view و presenter ایجاد کنیم . ابتدا روی پکیج view راست کلیک کرده ، New و سپس Java Class را میزنیم . نوع آنرا از Class به Interface تغییر می دهیم. نام این اینترفیس را LoginView گذاشته و ok را می زنیم تا اینترفیس ایجاد شود.
سپس روی پکیج presenter راست کلیک کرده، New و سپس Java Class را میزنیم . نوع آنرا از Class به Interface تغییر می دهیم. نام این اینترفیس را LoginPresenter گذاشته و ok را میزنیم تا اینترفیس دوم نیز ایجاد شود.
کد های اینترفیس LoginView به صورت زیر می باشد :
package com.elecomco.simplemvp.view; public interface LoginView { void loginValidations(); void loginSuccess(); void loginError(); }
همانطور که مشاهده میکنید ۳ بدنه تابع در این اینترفیس ایجاد کرده ایم تا هنگام ارث بری از اینترفیس آنها را پیاده سازی کنیم .
یک بدنه تابع با نام preFormLogin در اینترفیس LoginPresenter ایجاد کرده که شامل ۲ ورودی از نوع رشته می باشد. در واقع می خواهیم یوزر نیم و پسورد در این اینترفیس گرفته شود. یا بهتر بگم ورودی ها رو از لایه Presenter دریافت می کنیم.
package com.elecomco.simplemvp.presenter; public interface LoginPresenter { void preFormLogin(String userName,String password); }
حالا یه کلاس می خوایم که از اینترفیس LoginPresenter ارث بری کنه (implements) ، و توابع اون رو پیاده سازی کنه. در پکیج model که در واقع نقش لایه مدل رو بازی می کنه، یه کلاس جدید با نام PresenterImpl میسازیم .کد های این کلاس به صورت زیر می باشد:
package com.elecomco.simplemvp.model; import android.text.TextUtils; import com.elecomco.simplemvp.presenter.LoginPresenter; import com.elecomco.simplemvp.view.LoginView; public class PresenterImpl implements LoginPresenter { LoginView mLoginView; public PresenterImpl(LoginView mLoginView) { this.mLoginView = mLoginView; } @Override public void preFormLogin(String userName, String password) { if(TextUtils.isEmpty(userName) || TextUtils.isEmpty(password)){ mLoginView.loginValidations(); }else { if(userName.equals("mohammad") && password.equals("123")){ mLoginView.loginSuccess(); }else { mLoginView.loginError(); } } } }
همانطور که مشاهده می کنید ورودی Constractor ما همان اینترفیسی هست که در لایه ویو ایجاد کرده ایم. یوزر نیم و پسورد را چک می کنیم. اگر مقدار آنها خالی بود تابع loginValidations فراخوانی می شود. اگر مقدار آنها برابر مقادیر دلخواه خودم بود تابع loginSuccess و اگر مقادیر وارد شده اشتباه بود ، تابع loginError فراخوانی می شود.
در اینجا کاملا اختیار از view گرفته شده است و اصلا نمیداند از کجا گرفته می شوند و به چه شکلی پیاده سازی می شوند. لایه مدل اطلاعات را از لایه Presenter دریافت می کند و view فقط یک شکل نمایشی دارد و دستورات اصلی را لایه Presenter ایجاد می کند و لایه View فقط اطاعت می کند.
حالا میرسیم به کدنویسی اکتیویتی :
package com.elecomco.simplemvp.activities; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; import com.elecomco.simplemvp.R; import com.elecomco.simplemvp.model.PresenterImpl; import com.elecomco.simplemvp.presenter.LoginPresenter; import com.elecomco.simplemvp.view.LoginView; public class LoginActivity extends AppCompatActivity implements View.OnClickListener, LoginView { EditText etUserName,etPassword; TextView tvLogin; LoginPresenter mLoginPresenter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); etUserName=findViewById(R.id.etUserName); etPassword=findViewById(R.id.etPassword); tvLogin=findViewById(R.id.tvLogin); tvLogin.setOnClickListener(this); mLoginPresenter=new PresenterImpl(LoginActivity.this); } @Override public void onClick(View v) { String userName=etUserName.getText().toString(); String password=etPassword.getText().toString(); mLoginPresenter.preFormLogin(userName,password); } @Override public void loginValidations() { Toast.makeText(this, "Please Enter username and password!", Toast.LENGTH_SHORT).show(); } @Override public void loginSuccess() { Toast.makeText(this, "Login Success!", Toast.LENGTH_SHORT).show(); } @Override public void loginError() { Toast.makeText(this, "Login Failure!", Toast.LENGTH_SHORT).show(); } }
این ساده ترین پروژه ای بود که برای مفهوم معماری MVP در اندروید ایجاد کردیم. همینطور که می بینید محتوای ادیت تکست ها دیگه در لی اوت چک نمیشن، لی اوت ما دیگه اینجا هیچ کاره هست و فقط حالت نمایشی داره. کارهای اصلی رو لایه Presenter داره انجام میده . حالا اگه بخواین اکتیویتی رو به فرگمنت تبدیل کنید ، خیلی راحت و بدون اینکه در برنامتون تغییری ایجاد بشه ، این کار رو انجام میدین .
تو پروژه های بزرگ میتونید با معماری MVP آپدیت هاتون رو به راحتی و در کمترین زمان انجام بدین و نیاز نیست کل برنامتون رو از اول بنویسید . فرض کنید اینستاگرام بخواد یه آپشن جدید به اپلیکیشنش اضاف کنه ، اگر از ابتدا معماریش درست پیاده سازی نشه ، مجبوره خیلی از قسمتای برنامه نویسی رو پاک کنه و از اول به یه شکل دیگه بنویسه .
نتیجه گیری از معماری ام وی پی اندروید
امروزه شرکت های بزرگ برای اسخدام برنامه نویس اندروید یکی از شرط هاشون تسلط برنامه نویس به معماری MVP هست. امیدواریم شما هم با اموزش معماری MVP در اندروید به یک برنامه نویس حرفه ای تبدیل شده باشید. MVP یک Pattern یا الگو از معماری MVC بوده و تفاوت اصلی آن در نحوه کار Controller و Presenter است. زمانی که به کمک یک معماری مثل MVC یا MVP منطق و نمایش برنامه را از هم جدا میکنیم، تمرکز ما روی اجزای مختلف پروژه بیشتر میشود. شاید در پروژههای کوچک استفاده از ساختاری مثل MVP چندان به صرفه نباشد اما وقتی پروژه ما بزرگتر شده و اعضای تیم، قابلیتهای محصول، حجم کدها و غیره بیشتر میشوند منطقی است از یک معماری مثل MVP استفاده کنیم. با این کار زمان زیادی برای خود و اعضای تیم میخریم و فرآیند توسعه، خطایابی و حل مشکلات پروژه کاهش مییابد.
سوالات متداول در زمینه الگوی MVP
تاریخچه معماری ام وی پی چیست؟
الگوی نرم افزار MVP در اوایل دهه ۱۹۹۰ در Taligent، سرمایه گذاری مشترک اپل، IBM، و Hewlett-Packard سرچشمه گرفت.
MVP مدل برنامه نویسی اساسی برای توسعه برنامه کاربردی در محیط CommonPoint مبتنی بر C ++ Taligent است. این الگو بعدها توسط Taligent به جاوا منتقل شد و در مجله برنامه نویسی ای توسط Taligent CTO Mike Potel رایج شد.
پس از توقف Taligent در سال ۱۹۹۸، اندی بوئر و بلر مک گلاشان از Dolphin Smalltalk الگوی MVP را برای ایجاد مبنایی برای چارچوب رابط کاربری Smalltalk خود تطبیق دادند. در سال ۲۰۰۶، مایکروسافت شروع به استفاده از MVP در مستندات و نمونههایی برای برنامهنویسی رابط کاربری در داتنت فریمورک کرد.
تکامل و انواع مختلف الگوی MVP، از جمله رابطه MVP با سایر الگوهای طراحی مانند MVC، در مقاله برنامه نویسی توسط مارتین فاولر و مقاله دیگری توسط درک گریر به تفصیل مورد بحث قرار گرفته است.
تفاوت بین MVP و MVC چیست؟
اول باید به این نکته فکر کنید که این معماری ها چیزی به جز یک سری قوانین که برنامه نویس باید آن ها رو رعایت کند نیستند. این دو معماری هم شباهت زیادی به هم دارند و می توانیم بگیم یک سری اشکالاتی که در معماری MVC وجود داشت، در MVP سعی شده که برطرف شود.
تفاوتی که بین معماری MVP و MVC وجود دارد این است که به جای مدیریت کردن هر دو لایه Controller و View درون کلاس های اکتیویتی مانند چیزی که در معماری MVC دیدیم، در این معماری لایه های View و Presenter کاملا از هم جدا هستند و هر دو این لایه سبک تر از قبل شده اند.
تفاوت بین MVP و MVVM چیست؟
معماری MVVM یا همون Model-View-Viewmodel همانند mvc یا mvp یکی از الگو های معماری نرم افزار است. استفاده از آن به ما کمک میکند کدی تمیز، قابل نگهداری ، قابل تست و با خوانایی بالا داشته باشیم.
به طور کلی MVVM از سه بخش تشکیل شده
- ویو (view): وظیفه نمایش اطلاعات و گرفتن داده های ورودی از کاربر را دارد. اطلاعات گرفته شده از کاربر به viewmodel فرستاده می شود.
- ویو مدل (viewmodel): داده های دریافت شده از مدل را مدریت می کند و به view می فرستد.
- مدل (model): وظیفه مدیریت داده ها را بر عهده دارد.
در نگاه اول، به نظر می رسد شباهت بسیار زیادی بین معماری MVP و MVVM وجود دارد. انگار presenter به viewmodel تبدیل شده است. اما تفاوت آنها چیزی فراتر از تغییر نام presenter به viewmodel است. همانطور که در شکل زیر می بینید یک سری اینترفیس هم برای پیاده سازی MVP لازم است. اینترفیس IView بعد ها در presenter استفاده می شود و به طور مستقیم view را تغییر می دهد. در صورتی که در معماری MVVM این اتفاق به طور مستقیم نمی افتد یعنی viewmodel به صورت غیر مستقیم view را تغییر می دهد. نکته دیگر این است که ارتباط بین view و presenter در mvp یک به یک است، اما ارتباط بین view و viewmodel یک به چند است.
اینکه در معماری MVP ، ویو به صورت مستقیم توسط presenter تغییر می کند یک سری مشکلات و پیچیدگی ها را به کد اضافه می کند. زیرا ما مجبوریم حواسمان باشد که ویو در چه وضعیتی قرار دارد و اگر در وضعیت یا onDestroy نبود اجازه به روز رسانی ویو را داریم. به همین دلیل ما مجبوریم در presenter وضعیت view را گزارش دهیم. همین باعث می شود تست کردن کد ها، نگهداری و پیچیدگی کدمان افزایش یابد.
چند راه حل برای به روز رسانی view توسط viewmodel پیشنهاد می شود.
- دیتا بایندینگ(DataBinding)
- لایو دیتا (LiveData)
- ار ایکس جاوا(RxJava)
در همه راه حل های پیشنهاد شده هدف این است که یه سری observable (شی هایی هستند که زمانی که تغییر می کنند تغییرشان را به کسانی که آنها را observe (مشاهده) می کنند اعلام میکنند.) در viewmodel داشته باشیم که در view آنها را observe(مشاهده) کنیم.
دوره آموزش الگوی MVP پروژه محور هستند؟
بله تمامی دوره های برنامه نویسی سایت آموزش برنامه نویسی الکامکو پروژه محور هستند و همه مباحث در پروژه های واقعی به شما نشان داده خواهد شد.
چرا خرید دوره اموزش معماری mvp در اندروید از سایت آموزش برنامه نویسی الکامکو؟
- آموزشگاه برنامه نویسی الکامکو یک مرجع رسمی تولید کننده دوره های برنامه نویسی اعم از دوره اموزش معماری mvp اندروید است.
- منابع آموزشی دوره اموزش معماری mvp اندروید سرفصل های اصلی را شامل می شود.
- صدای مدرس برای تدریس دوره اموزش معماری mvp کاملا رسا است و تصویر نیز کاملا واضح است.
- بروزرسانی های دوره اموزش معماری mvp مدام توسط مدرس بررسی و پیاده سازی می شوند.
- دانلود فیلم دوره آموزش معماری mvp از سرورهای پرسرعت برای شما قابل دانلود هستند.
- دوره آموزش معماری mvp با بیانی ساده و قابل فهم توضیح داده می شود.
- دوره آموزش معماری mvp اندروید صفر تا صدی را تحت پوشش قرار می دهد.
- دوره آموزش معماری mvp اندروید از پایه ابتدایی گفته شده طوری که فرض شده شما چیزی بلد نیستید.
- در پکیج برنامه نویسی اموزش معماری ام وی پی اندروید تمامی نکات بین آموزش بررسی و گفته شده است و تجربیات برنامه نویس با شما اشتراک گذاشته می شود.
- چند جلسه از کل جلسات با قابلیت دانلود فیلم اموزش معماری ام وی پی در اندروید به صورت رایگان برای شما در دسترس است تا در صورت تمایل اقدام به دانلود بقیه جلسات نمایید.
- تعداد فیلم های آموزش معماری ام وی پی در اندروید تهیه شده متناسب با آموزش ها می باشد.
- قیمت برنامه نویسی دوره آموزش معماری mvp در اندروید ، با تخفیف برای شما محاسبه می شود. یعنی شما با همین مبلغ می توانید برنامه نویس حرفه ای شوید.
- دانشجویان پس از مشاهده جلسات دوره آموزش معماری mvp در اندروید امکان پرسش و پاسخ، رفع اشکال، انجام تمرین را خواهند داشت.
- و…
بازار کار بعد از یادگیری معماری ام وی پی اندروید چگونه است؟
آموزش از طریق فیلم معماری ام وی پی اندروید یکی از جدیدترین اموزش ها برای افرادی که نیاز به ساخت برنامه های اندروید حرفه ای دارند است. در نتیجه چون معماری ام وی پی اندروید یک معماری جدید است و از با روی کار آمد طرفداران زیادی را نسبت به خودش جلب کرده و متخصص زیادی در این حوزه وجود ندارد، اگر شما بتوانید معماری ام وی پی اندروید را خوب یاد بگیرید صد در صد بازار کار خوبی در انتظار شماست و می توانید درآمد خیلی خوبی از این بازار کار MVP داشته باشید و کسب درآمد کنید.
فیلم اموزش معماری MVP اندروید برای من کافی است؟
بله با فیلم اموزش معماری MVP اندروید شما دیگر نیاز به هیچ دوره دیگری نخواهید داشت ولی این به این معنی نیست که برای حرفه ای کار کردن فقط به ویدیو بسنده کنید، بلکه باید همیشه در حال یادگیری باشید و از ترندها روز باخبر باشید.
با فیلم اموزش اموزش معماری MVP در اندروید می توانم وارد بازار کار شوم؟
بله – فیلم اموزش MVP اندروید فروشگاه برنامه نویسی الکامکو چون از پایه تا پیشرفته توضیح داده شده شما را برای ورود به بازار کار آماده می کند.
یادگیری با فیلم اموزش MVP اندروید بهتر است یا کتاب یا روش های دیگر؟
صدر درصد یادگیری با فیلم اموزش MVP اندروید خیلی بهتر از کتاب است و دلایل زیادی برای این کار وجود دارد. مهمترین دلیل این است که دوره ها همیشه اپدیت می شوند.
بعد از دیدن اموزش MVP اندروید چگونه پروژه بگیریم؟
شما میتوانید بعد از مشاهده اموزش MVP اندروید به روشهای مختلفی می توانید پروژه بگیرید که در این قسمت شما را برخی از آنها آشنا می کنیم:
روش درامدزایی بعد از مشاهده اموزش MVP اندروید و مسلط شدن با این الگو این است که در یک شرکت استخدام شوید و روی پروژههای شرکتی کار کنید. در این روش ساعت کاری مشخص و معمولا بیمه خواهید شد.
یکی دیگر از روشها بعد از اموزش MVP اندروید این است که به صورت فریلنسری کار کنید. در حالت فریلنسری شما میتوانید خودتان از وبسایتهای پروژه یابی، با کارفرما لینک شده و پروژه بگیرید. همچنین در فضای مجازی، گروه ها و کانال هایی وجود دارند که این کار را انجام میدهند. در نهایت شما میتوانید یک سایت معرفی هم برای خود طراحی کنید و لینک آن را در شبکههای مختلف بفرستید.
روش سوم این است که یک ایده را پیاده سازی کنید و از آن کسب درآمد کنید. به این شکل میتوانید با پیاده سازی یک ایده موفق نظر کارفرماهای مختلف را هم به خود جذب کنید و از این طریق هم استارتاپ خود را داشته باشید و هم با تاسیس یک شرکت و گرفتن نیرو پروژه های مختلفی را انجام دهید. ولی این مورد برای شروع شاید زیاد مناسب نباشد.
روش چهارم بعد از اموزش MVP اندروید این است که می توانید به صورت انلاین تدریس کنید با در اموزشگاه ها و دانشگاه ها تدریس کنید.
روش پنجم بعد از اموزش MVP اندروید این است که می توانید دوره های آموزشی درست کنید و انها را در سایت یا کانالهای تلگرام یا اینستاگرام و دیگر فضاهای مجازی بفروشید.
چرا فیلم آموزش MVP اندروید نسبت به کلاسهای حضوری توصیه می شود؟
- با مشاهده فیلم آموزش MVP اندروید می توانید هزینه کمتری را نسب به کلاسهای برنامه نویسی حضوری پرداخت کنید.
- بعد یا در حین مشاهده فیلم آموزش MVP اندروید می توانید مشکلات خود را آنلاین در فضای مجازی و انجمن ها و کانالها و غیره و حتی از استاد مربوطه مطرح کنید و سریع به نتیجه برسید.
- با مشاهده فیلم آموزش MVP اندروید می توانید در سایت های مسابقه ای شرکت کنید و برنده شوید.
- با مشاهده فیلم آموزش MVP در اندروید می توانید سرفرصت و با در اختیار داشتن وقت کافی از کلاسها یادداشت برداری کنید.
- با مشاهده فیلم آموزش MVP در اندروید می توانید آموزش ها را با کیفیت بالا با جدیدترین تکنولوژی ها مشاهده کنید.
- با مشاهده فیلم آموزش MVP در اندروید می توانید از آخرین ورژن های نصب شده نرم افزارها آشنا شوید.
- با اموزش معماری mvp اندروید می توانید از آخرین ترفندها و تکنیک هایی که میان کار بدرد شما خواهد خورد استفاده کنید.
- با اموزش MVP در اندروید می توانید از تمامی وقت خود برای هر اموری که می خواهید در این زمینه قوی تر باشید استفاده کنید.
- با اموزش MVP اندروید می توانید وارد بازار کار حرفه ای ها شوید چون تقریبا هر شرکت خصوصی یا هر ارگان سازمانی به نیروهای انسانی برای انجام دادن مهارت های این زبان برنامه نویسی نیاز دارند.
- با اموزش MVP اندروید می توانید سواد کامپیوتری خودتان را بالا ببرید و کارهای روزمره و یا کاریتان را بصورت حرفه ای تر، با سرعت بیشتر و زمان کمتری انجام دهید.
- با اموزش MVP اندروید می توانید این زبان برنامه نویسی را بر حسب استانداردها و سرفصل های مورد نیاز فنی حرفه ای یاد بگیرید و جلو روید.
- با اموزش معماری mvp در اندروید می توانید این زبان برنامه نویسی را پروژه محور یاد بگیرید.
- با آموزش معماری mvp در اندروید می توانید از رقبای خود بخاطر یادگیری خیلی از ترفندها و تجربه های اساتید برتر پیشی بگیرید.
- با آموزش معماری mvp در اندروید می توانید مهارتهای برنامه نویسی خود را افزایش دهید.
- با آموزش معماری mvp در اندروید می توانید در سایت های برنامه نویسی گواهینامه هایی دریافت کنید و از آن در رزومه خود استفاده کنید.
- با مشاهده آموزش معماری mvp اندروید می توانید شهریه ای خیلی کمتر از خرید کتاب های گران پرداخت کنید.
- بعد از آموزش معماری mvp اندروید و تسلط بر دوره های دیگر بخصوص دوره متخصص برنامه نویسی اندروید بازار کار خوبی پیش روی شماست.
- بعد از آموزش معماری mvp اندروید می توانید پروژه های مختلفی را بصورت دورکاری قبول کنید.
- و…
مقالات برنامه نویسی موبایل، مقالات برنامه نویسی اندروید، مقالات اندروید استودیو، دوره های برنامه نویسی جاوا برای اندروید،
این دوره به من کمک کرد تا مفاهیم کامل MVP رو به خوبی درک کنم و باهاش پروژه ها رو اصولی تر ببرم جلو. مرسی از شما
امکان خرید این دوره وجود داره؟
بله . میتونید خرید کنید
مرسی عالی. منتظر این دورتون بودم.