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/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
  • 神经网络代码详解

    神经网络作为一种人工智能技术,被广泛应用于语音识别、图像识别、自然语言处理等领域。而神经网络的模型编写,离不开代码。本文将从多个方面详细阐述神经网络模型编写的代码技术。 一、神经网…

    编程 2025-04-25

发表回复

登录后才能评论