Android設計模式詳解

一、MVC設計模式

1、MVC是什麼?

Model-View-Controller,即模型-視圖-控制器,是軟件架構設計模式中最常用的一種,通常用於開發桌面和網絡應用程序。

2、MVC的優點

將應用程序劃分為三個部分:模型、視圖和控制器,實現了數據和數據表示的分離,有利於程序的可維護性、可擴展性和可重用性。

3、MVC的相關代碼示例:

public class StudentListAdapter extends BaseAdapter {

    private List mStudentList;
    private Context mContext;

    public StudentListAdapter(List studentList, Context context) {
        mStudentList = studentList;
        mContext = context;
    }

    @Override
    public int getCount() {
        return mStudentList.size();
    }

    @Override
    public Object getItem(int position) {
        return mStudentList.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder viewHolder;
        if (convertView == null) {
            convertView = LayoutInflater.from(mContext).inflate(R.layout.item_student, null);
            viewHolder = new ViewHolder();
            viewHolder.mNameTv = convertView.findViewById(R.id.tv_name);
            viewHolder.mAgeTv = convertView.findViewById(R.id.tv_age);
            viewHolder.mGenderTv = convertView.findViewById(R.id.tv_gender);
            convertView.setTag(viewHolder);
        } else {
            viewHolder = (ViewHolder) convertView.getTag();
        }
        Student student = (Student) getItem(position);
        viewHolder.mNameTv.setText(student.getName());
        viewHolder.mAgeTv.setText(String.valueOf(student.getAge()));
        viewHolder.mGenderTv.setText(student.getGender());
        return convertView;
    }

    private class ViewHolder {
        TextView mNameTv;
        TextView mAgeTv;
        TextView mGenderTv;
    }
}

二、MVP設計模式

1、MVP是什麼?

Model-View-Presenter,即模型-視圖-表示器,是一種針對User Interface設計的設計模式,其主要目的是分離視圖和業務邏輯,增強應用程序的可維護性和測試性。

2、MVP的優點

優點主要集中在幾點:界面和業務邏輯分離、封裝業務邏輯層,有利於代碼重用和測試。

3、MVP的相關代碼示例:

public class LoginPresenter {

    private ILoginView mLoginView;
    private LoginModel mLoginModel;

    public LoginPresenter(ILoginView loginView) {
        mLoginView = loginView;
        mLoginModel = new LoginModel();
    }

    public void login(String username, String password) {
        boolean result = mLoginModel.login(username, password);
        if (result) {
            mLoginView.onLoginSuccess();
        } else {
            mLoginView.onLoginFailed();
        }
    }
}

三、MVVM設計模式

1、MVVM是什麼?

Model-View-ViewModel,即模型-視圖-視圖模型,是一種 UI 架構模式,其目的是分離視圖的狀態和行為,將其抽象出來,方便維護和測試。

2、MVVM的優點

它使界面邏輯與業務邏輯分離,有利於代碼重用、提高代碼的可維護性和可測試性。

3、MVVM的相關代碼示例:

public class UserViewModel extends BaseObservable {

    private User mUser;

    public UserViewModel(User user) {
        mUser = user;
    }

    @Bindable
    public String getUserName() {
        return mUser.getName();
    }

    public void setUserName(String userName) {
        mUser.setName(userName);
        notifyPropertyChanged(BR.userName);
    }

    @Bindable
    public int getUserAge() {
        return mUser.getAge();
    }

    public void setUserAge(int userAge) {
        mUser.setAge(userAge);
        notifyPropertyChanged(BR.userAge);
    }
}

四、單例設計模式

1、單例模式是什麼?

單例模式是一種常用的創建型設計模式,在應用程序運行時使數據只能被實例化一次,從而節省大量的系統資源。

2、單例模式的優點

主要有兩點:節省系統資源、保證數據的一致性。

3、單例模式的相關代碼示例:

public class Singleton {

    private static Singleton sInstance;

    private Singleton() {
    }

    public static Singleton getInstance() {
        if (sInstance == null) {
            synchronized (Singleton.class) {
                if (sInstance == null) {
                    sInstance = new Singleton();
                }
            }
        }
        return sInstance;
    }
}

五、觀察者模式

1、觀察者模式是什麼?

觀察者模式是一種對象行為模式,它定義了一種一對多的依賴關係,當一個對象的狀態發生改變時,所有依賴於它的對象都會得到通知並自動更新。

2、觀察者模式的優點

主要有兩點:松耦合、擴展性強。

3、觀察者模式的相關代碼示例:

public interface Subject {

    void registerObserver(Observer observer);

    void removeObserver(Observer observer);

    void notifyObservers();
}

public interface Observer {

    void update(float temperature, float humidity, float pressure);
}

public class WeatherData implements Subject {

    private List mObserverList;
    private float mTemperature;
    private float mHumidity;
    private float mPressure;

    public WeatherData() {
        mObserverList = new ArrayList();
    }

    @Override
    public void registerObserver(Observer observer) {
        mObserverList.add(observer);
    }

    @Override
    public void removeObserver(Observer observer) {
        mObserverList.remove(observer);
    }

    @Override
    public void notifyObservers() {
        for (Observer observer : mObserverList) {
            observer.update(mTemperature, mHumidity, mPressure);
        }
    }

    public void setMeasurements(float temperature, float humidity, float pressure) {
        mTemperature = temperature;
        mHumidity = humidity;
        mPressure = pressure;
        measurementsChanged();
    }

    private void measurementsChanged() {
        notifyObservers();
    }
}

原創文章,作者:KVKYH,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/332994.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
KVKYH的頭像KVKYH
上一篇 2025-01-27 13:34
下一篇 2025-01-27 13:34

相關推薦

  • 手機安全模式怎麼解除?

    安全模式是一種手機自身的保護模式,它會禁用第三方應用程序並使用僅限基本系統功能。但有時候,安全模式會使你無法使用手機上的一些重要功能。如果你想解除手機安全模式,可以嘗試以下方法: …

    編程 2025-04-28
  • Android ViewPager和ScrollView滑動衝突問題

    Android開發中,ViewPager和ScrollView是兩個常用的控件。但是當它們同時使用時,可能會發生滑動衝突的問題。本文將從多個方面介紹解決Android ViewPa…

    編程 2025-04-28
  • Android如何點擊其他區域收起軟鍵盤

    在Android應用中,當輸入框獲取焦點彈出軟鍵盤後,我們希望能夠點擊其他區域使軟鍵盤消失,以提升用戶體驗。本篇文章將說明如何實現這一功能。 一、獲取焦點並顯示軟鍵盤 在Andro…

    編程 2025-04-28
  • Qt State Machine與狀態機模式

    本文將介紹Qt State Machine和狀態機模式在Qt中的實現。Qt提供了QStateMachine和QState兩個類,可以方便地實現狀態機模式,並且能有效地處理複雜的、多…

    編程 2025-04-27
  • 顯示C++設計模式

    本文將詳細介紹顯示C++設計模式的概念、類型、優點和代碼實現。 一、概念 C++設計模式是在軟件設計階段定義,用於處理常見問題的可重用解決方案。這些解決方案是經過測試和驗證的,並已…

    編程 2025-04-27
  • Android Studio HUD 實現指南

    本文將會以實例來詳細闡述如何在 Android Studio 中使用 HUD 功能實現菊花等待指示器的效果。 一、引入依賴庫 首先,我們需要在 build.gradle 文件中引入…

    編程 2025-04-27
  • Android和Vue3混合開發方案

    本文將介紹如何將Android和Vue3結合起來進行混合開發,以及其中的優勢和注意事項。 一、環境搭建 在進行混合開發之前,需要搭建好相應的開發環境。首先需要安裝 Android …

    編程 2025-04-27
  • Centos7進入單用戶模式的解釋

    本文將介紹如何在Centos7中進入單用戶模式,並從以下幾個方面進行詳細的闡述。 一、Centos7進入單用戶模式的解答 在Centos7中進入單用戶模式需要執行以下步驟: 1. …

    編程 2025-04-27
  • Android Java Utils 可以如何提高你的開發效率

    Android Java Utils 是一款提供了一系列方便實用的工具類的 Java 庫,可以幫助開發者更加高效地進行 Android 開發,提高開發效率。本文將從以下幾個方面對 …

    編程 2025-04-27
  • Linux sync詳解

    一、sync概述 sync是Linux中一個非常重要的命令,它可以將文件系統緩存中的內容,強制寫入磁盤中。在執行sync之前,所有的文件系統更新將不會立即寫入磁盤,而是先緩存在內存…

    編程 2025-04-25

發表回復

登錄後才能評論