一、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
微信掃一掃
支付寶掃一掃