ایجاد یک پروژه ساده برای درک بهتر پیاده سازی MVP در اندروید :

بهترین و اولین مرجع رسمی مقالات طراحی اپلیکیشن

ایجاد یک پروژه ساده برای درک بهتر پیاده سازی MVP در اندروید :

۱۶۱ بازديد
یک پروژه نو در اندروید استودیو ساخت می کنیم . اسم لی اوت را به activity_login تغییر طراحی اپلیکیشن در مشهد و تحول می‌دهیم . روت لی اوت را به LinearLayout تغییر تحول داده و داخل آن ۲ EditText و یک TextView به طور ذیل می‌گذاریم :
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">
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" />
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" />
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" />
سه پکیج تازه با اسم های 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 تنها اطاعت می نماید.
تا كنون نظري ثبت نشده است
ارسال نظر آزاد است، اما اگر قبلا در فارسی بلاگ ثبت نام کرده اید می توانید ابتدا وارد شوید.