MVP 架構分析

2022-09-12 00:42:27 字數 2779 閱讀 9665

mvc跟mvp的區別以及使用的優缺點

mvc:view和控制器耦合性強

mvp:面向協議,view和model完全解耦,獲取資料(網路遵循協議拿資料,controller層不顯示網路請求資料的過程,只要遵循協議就能拿到資料)

userpresenter層

#import

#import

"user.h

"@inte***ce

userviewdata : nsobject

/** 名字

*/@property (nonatomic, strong) nsstring *name ;

/** 年齡

*/@property (nonatomic, strong) nsstring *age ;

- (instancetype)initwithname:(nsstring*)name age:(nsstring*)age;

@end

ns_assume_nonnull_begin

@protocol userviewdelegate - (void

)startloading;

- (void

)finishloading;

//使用者介面的資料

- (void)setusers:(nsarray*)userviewdata;

//資料是空的時候顯示

- (void

)setemptyusers;

@end

@inte***ce

userpresenter : nsobject

@property (nonatomic, weak)

iddelegate

;- (void

)getusers;

@end

ns_assume_nonnull_end

#import

"userpresenter.h

"@implementation

userviewdata

- (instancetype)initwithname:(nsstring*)name age:(nsstring*)age

return

self;

}@end

@implementation

userpresenter

-(void

)getusers

else

if ([self.delegate

respondstoselector:@selector(setusers:)])

}}];

}@end

使用:

#import

"viewcontroller.h

"#import

"user.h

"#import

"userpresenter.h

"@inte***ce viewcontroller ()/*

* tableview

*/@property (nonatomic, strong) uitableview *tableview ;

/** 指示器

*/@property (nonatomic, strong) uiactivityindicatorview *indicator ;

/** 空白佔位

*/@property (nonatomic, strong) uiview *emptyview ;

/** protocol

*/@property (nonatomic, strong) userpresenter *userpresenter ;

/** 資料來源

*/@property (nonatomic, strong) nsarray

*userviewdatas ;

@end

@implementation

viewcontroller

- (void

)viewdidload

- (void

)setupui

- (void

)loaddata

#pragma mark - userviewdelegate

-(void

)startloading

- (void

)finishloading

//使用者介面的資料

-(void)setusers:(nsarray*)userviewdata

//資料是空的時候顯示

-(void

)setemptyusers

#pragma mark - 資料來源方法

-(nsinteger)tableview:(uitableview *)tableview numberofrowsinsection:(nsinteger)section

- (uitableviewcell *)tableview:(uitableview *)tableview cellforrowatindexpath:(nsindexpath *)indexpath

userviewdata *userviewdata =self.userviewdatas[indexpath.row];

cell.textlabel.text =userviewdata.name;

cell.detailtextlabel.text =userviewdata.age;

return

cell;

}@end

Android中的MVP架構

model 業務邏輯和實體模型 controllor 是應用程式中處理使用者互動的部分,activity來充當。檢視 view 負責介面資料的展示,與使用者進行互動,就是activity 主導器 presenter 相當於協調者,是模型與檢視之間的橋梁,將模型與檢視分離開來。通過presenter進...

MVP架構設計的新手例子

1.要用到okhttp,許可權及配置如下 android name android.permission.internet compile com.squareup.okhttp3 okhttp 3.7.0 2.網路任務處理類 本來要寫乙個介面,再繼承介面寫乙個類,這裡直接用乙個類,便於理解 pub...

Android最簡單的MVP架構寫法

1 bean資料夾屬於封裝的物件 2 model 我把他的定義就是專門寫網路請求的 3 presenter 我把他當做是溝通的橋梁,實現資料層與檢視層的互動 4 view 最簡單的檢視層包括 activity adapter fragment等。解釋一下我不喜歡講話,所以一般都是 或者截圖了。1 我...