您的位置:

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();
    }
}

  
印象笔记记录java学习(Java成长笔记)

2022-11-12
js高级程序设计笔记14(js高级程序设计笔记14页)

本文目录一览: 1、JavaScript高级程序设计 该怎么看 2、JavaScript学习笔记之数组基本操作示例 3、JS中有关sort以及return的问题 JavaScript高级程序设计 该怎

2023-12-08
java方法整理笔记(java总结)

2022-11-08
java学习笔记(java初学笔记)

2022-11-14
java基础知识学习笔记一,Java基础笔记

2022-11-21
发篇java复习笔记(java课程笔记)

2022-11-09
jsp程序开发学习笔记2,jsp程序设计题库

本文目录一览: 1、《JSP&Servlet学习笔记》pdf下载在线阅读,求百度网盘云资源 2、林信良编著jsp&servlet学习笔记第2版课后答案吗 3、jsp有没有快速掌握的办法呀? 4、要学J

2023-12-08
数据库的笔记mysql,数据库管理系统笔记

2022-11-24
阿里云笔记的功能与使用详解

2023-05-21
python基础学习整理笔记,Python课堂笔记

2022-11-21
我的python笔记06(Python)

2022-11-14
java客户端学习笔记(java开发笔记)

2022-11-14
重学java笔记,java笔记总结

2022-11-23
Android设计模式概述

2023-05-20
Android深色模式详解

2023-05-22
python学习之笔记(python的笔记)

2022-11-10
Android 五种常见设计模式

一、观察者模式 观察者模式是一种行为型模式,它定义了一种一对多的关系,让多个观察者对象同时监听一个主题对象。当主题对象状态发生改变时,会自动通知所有的观察者对象,使它们能够及时进行响应。在Androi

2023-12-08
mysql数据库如何设计模式(mysql数据库怎么设计的)

2022-11-15
python笔记二(2python)

2022-11-11
java笔记,尚硅谷java笔记

2022-12-01