精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

總結(jié)整理下一個快速開發(fā)MVVM框架

移動開發(fā)
MVVM的出現(xiàn)主要是為了解決在開發(fā)過程中Controller越來越龐大的問題,變得難以維護,所以MVVM把數(shù)據(jù)加工的任務從Controller中解放了出來,使得Controller只需要專注于數(shù)據(jù)調(diào)配的工作,ViewModel則去負責數(shù)據(jù)加工并通過通知機制讓View響應ViewModel的改變。

做iOS開發(fā)也有一段時間了,最近閑暇之余學習研究了下MVVM,每個人對架構(gòu)和設計模式都有不同的理解,在此記錄下我對MVVM的一些小見解,僅供參考,歡迎批評指正。

概述

MVVM的出現(xiàn)主要是為了解決在開發(fā)過程中Controller越來越龐大的問題,變得難以維護,所以MVVM把數(shù)據(jù)加工的任務從Controller中解放了出來,使得Controller只需要專注于數(shù)據(jù)調(diào)配的工作,ViewModel則去負責數(shù)據(jù)加工并通過通知機制讓View響應ViewModel的改變。

MVVM是基于胖Model的架構(gòu)思路建立的,然后在胖Model中拆出兩部分:Model和ViewModel。ViewModel本質(zhì)上算是Model層(因為是胖Model里面分出來的一部分),所以View并不適合直接持有ViewModel,因為ViewModel有可能并不是只服務于特定的一個View,使用更加松散的綁定關(guān)系能夠降低ViewModel和View之間的耦合度。

還有一個讓人很容易忽略的問題,大部分國內(nèi)外資料闡述MVVM的時候都是這樣排布的:

  1. ViewViewModel Model 

造成了MVVM不需要Controller的錯覺,現(xiàn)在似乎發(fā)展成業(yè)界開始出現(xiàn)MVVM是不需要Controller的聲音了。其實MVVM是一定需要Controller的參與的,雖然MVVM在一定程度上弱化了Controller的存在感,并且給Controller做了減負瘦身(這也是MVVM的主要目的)。但是,這并不代表MVVM中不需要Controller,MMVC和MVVM他們之間的關(guān)系應該是這樣:

  1. View  C  ViewModel Model 

所以使用MVVM之后,就不需要Controller的說法是不正確的。嚴格來說MVVM其實是MVCVM。從中可以得知,Controller夾在View和ViewModel之間做的其中一個主要事情就是將View和ViewModel進行綁定。在邏輯上,Controller知道應當展示哪個View,Controller也知道應當使用哪個ViewModel,然而View和ViewModel它們之間是互相不知道的,所以Controller就負責控制他們的綁定關(guān)系,所以叫Controller/控制器就是這個原因。

前面扯了那么多,其實歸根結(jié)底就是一句話:在MVC的基礎上,把C拆出一個ViewModel專門負責數(shù)據(jù)處理的事情,就是MVVM。然后,為了讓View和ViewModel之間能夠有比較松散的綁定關(guān)系,于是我們使用ReactiveCocoa,KVO,Notification,block,delegate和target-action都可以用來做數(shù)據(jù)通信,從而來實現(xiàn)綁定,但都不如ReactiveCocoa提供的RACSignal來的優(yōu)雅,如果不用ReactiveCocoa,綁定關(guān)系可能就做不到那么松散那么好,但并不影響它還是MVVM。

MVVM(View-ViewManger-C-ViewModel-Model)

  • View - 用來呈現(xiàn)用戶界面
  • ViewManger - 用來處理View的常規(guī)事件,負責管理View
  • Controller - 負責ViewManger和ViewModel之間的綁定,負責控制器本身的生命周期。
  • ViewModel - 存放各種業(yè)務邏輯和網(wǎng)絡請求
  • Model - 用來呈現(xiàn)數(shù)據(jù) 

這種設計的目的是保持View和Model的高度純潔,提高可擴展性和復用度。在日常開發(fā)中,ViewModel是為了拆分Controller業(yè)務邏輯而存在的,所以ViewModel需要提供公共的服務接口,以便為Controller提供數(shù)據(jù)。而ViewManger的作用相當于一個小管家,幫助Controller來分別管理每個subView,ViewManger負責接管來自View的事件,也負責接收來自Controller的模型數(shù)據(jù),而View進行自己所負責的視圖數(shù)據(jù)綁定工作。Controller則是***的大家長,負責將ViewModel和ViewManger進行綁定,進行數(shù)據(jù)轉(zhuǎn)發(fā)工作。把合適的數(shù)據(jù)模型分發(fā)給合適的視圖管理者。

??日常開發(fā)中,往往一個視圖頁面交由一個控制器進行管理,而一個頁面上又有N個小的子頁面,這就要求我們來對這些視圖進行合適的分層處理,拆分視圖,將這些視圖進行封裝,將復雜View抽象成獨立的類,不必暴露出具體的實現(xiàn)細節(jié)。這樣做的好處是,簡化應用層的層級復雜度,同時也方便進行管理,視圖結(jié)構(gòu)就會變得很清晰。子視圖具體的內(nèi)部事件,可通過代理模式或者Block交由ViewManger處理,因為視圖是可以復用的,而其中的事件響應代碼往往是根據(jù)不同的業(yè)務是有差異的。所以可能會有下面兩種情況出現(xiàn):

  • View很純潔,需要復用View,若業(yè)務邏輯變化則切換ViewManger。
  • ViewManger也比較純潔,若業(yè)務邏輯不變,而View需要大變,則切換View即可,保證View中的protocol或者block一致即可<***是通過協(xié)議提前規(guī)范好>。

這樣就實現(xiàn)了互相的封裝,兩者之間只通過protocol或者block進行交流通信,降低了代碼的耦合度。盡量使用protocol和category來制定對象之間的通信規(guī)范,來降低代碼的侵入性。

這樣的架構(gòu)設計,就像一條生產(chǎn)線,ViewModel進行數(shù)據(jù)的采集和加工,Controller則進行數(shù)據(jù)的裝配和轉(zhuǎn)發(fā)工作,ViewManger進行接收轉(zhuǎn)發(fā)分配來的數(shù)據(jù),從而進行負責View的展示工作和管理View的事件。這樣,不管哪個環(huán)節(jié),都是可以更換的,同時也提高了復用性。

架構(gòu)講解

以上圖做為講解demo,最然很簡單,但是也能夠很好的闡述了,理解思想才是最重要的。 首先我們來拆分這個頁面,***個為控制器。暫且命名為MyController,上面有兩個直接子視圖,按鈕MyBtn和頁面比較復雜的子視圖MyView,MyView中有MyViewBtn1和MyViewBtn2還有一個MyViewLabel視圖。 具體結(jié)構(gòu)如下:

??界面分析完了,現(xiàn)在可以進行代碼的架構(gòu)工作了。 首先需要建立一個ViewModel,使它能夠源源不斷的進行數(shù)據(jù)的生產(chǎn),并提供數(shù)據(jù)給MyController;然后建立一個ViewManger負責管理MyView,當然,Model模型數(shù)據(jù)必不可少。這些工作完成之后,代碼結(jié)構(gòu)變?yōu)椋?/p>

控制器中的代碼結(jié)構(gòu)如下圖:

當用戶點擊MyBtn按鈕觸發(fā)動作時,控制器就會就將ViewMode中加載的數(shù)據(jù)模型轉(zhuǎn)發(fā)分配給ViewManger中的sui_model屬性接收。

  1. - (IBAction)clickBtnAction:(UIButton *)sender { 
  2.    self.thirdViewManger.sui_model = [self.viewModel getRandomData]; 

其中,MyViewModel中的加載代碼如下,如上所述,它的工作就是分解以前控制器做的一些事情。

  1. - (void)vm_getDataSuccessHandler:(void (^)())successHandler { 
  2.    // 博客中省略,查看詳細請參考demo 
  3.   
  4. - (instancetype)getRandomData { 
  5.     if (self.dataArrayList.count > 0) { 
  6.         u_int32_t index = arc4random_uniform((u_int32_t)self.dataArrayList.count); 
  7.         return self.dataArrayList[index]; 
  8.     } 
  9.     return nil; 

MyViewManger中的代碼如下,它實現(xiàn)了MVVMViewMangerProtocol協(xié)議的三個方法:

  1. // 此方法用來接收處理來自所管理View的一些事件。 
  2. - (void)handleViewMangerWithSubView:(UIView *)subView 
  3. // 此方法將view的父視圖傳遞過來,用來布局當前View 
  4. - (void)handleViewMangerWithSuperView:(UIView *)superView 
  5. // 根據(jù)所傳入的view和info信息分別實現(xiàn)具體的方法 
  6. - (void)handleViewMangerActionWithView:(UIView *)view info:(NSString *)info 
  1. - (void)handleViewMangerWithSubView:(UIView *)subView { 
  2.     __weak typeof(self.thirdView) weakThirdView =  self.thirdView; 
  3.     __weak typeof(self) weakSelf = self; 
  4.       
  5.     // btnClickBlock 
  6.     weakThirdView.btnClickBlock = ^() { 
  7.         [weakSelf handleViewMangerActionWithView:weakThirdView info:@"click"]; 
  8.     }; 
  9.       
  10.     // btnJumpBlock 
  11.     weakThirdView.btnJumpBlock = ^() { 
  12.         [weakSelf handleViewMangerActionWithView:weakThirdView info:@"jump"]; 
  13.     }; 
  14.   
  15. - (void)handleViewMangerWithSuperView:(UIView *)superView { 
  16.     self.thirdView.frame = CGRectMake(066, [UIScreen mainScreen].bounds.size.width, 200); 
  17.     [superView addSubview:self.thirdView]; 
  18.   
  19. - (void)handleViewMangerActionWithView:(UIView *)view info:(NSString *)info { 
  20.     if ([info isEqualToString:@"click"]) { 
  21.         [view configureViewWithCustomObj:self.sui_model]; 
  22.     } else { 
  23.         FirstVC *firstVC = [UIViewController svv_viewControllerWithStoryBoardName:@"Main" identifier:@"FirstVCID"]; 
  24.         [view.sui_currentVC.navigationController pushViewController:firstVC animated:YES]; 
  25.     } 

MyView中的代碼如下,主要是負責管理自身的內(nèi)部控件視圖,并根據(jù)業(yè)務邏輯需要定義了一些基本事件,通過交給ViewManger來實現(xiàn):

  1. - (IBAction)testBtnClick:(UIButton *)sender { 
  2.     if (self.btnClickBlock) { 
  3.         self.btnClickBlock(); 
  4.     } 
  5.   
  6. - (IBAction)jumpOtherVC:(UIButton *)sender { 
  7.     if (self.btnJumpBlock) { 
  8.         self.btnJumpBlock(); 
  9.     } 
  10.   
  11. // 根據(jù)傳入的model配置需要顯示的內(nèi)容 
  12. - (void)configureViewWithCustomObj:(id)obj { 
  13.     if (!obj) return
  14.     ThirdModel *thirdModel = (ThirdModel *)obj; 
  15.     self.testLabel.text = thirdModel.title; 

這樣把各個部分區(qū)分開來,是不是感覺代碼結(jié)構(gòu)十分清晰了呢,當然可以根據(jù)個人習慣來進行修改,代碼實現(xiàn)因人而異,但是思想確是互通的。把合適的業(yè)務邏輯交給最合適的對象去處理實現(xiàn),只需要遵守這么一個基本原則就可以了。

至于是否采用更輕量級的ViewController做法,即 通過將各個 protocol 的實現(xiàn)挪到 ViewController 之外,來為 ViewController 瘦身 ,眾口不一。以UITableView為例,我的做法是:

  • 如果只是在頁面上進行簡單的展示,并不設計負責的業(yè)務邏輯時,會將UITableViewDelegate與UITableViewDataSource單獨放到一個Handler鐘進行處理,抽象出tableHander,由MVVMTableDataDelegate進行負責管理;

  • 當然,事實上,實際開發(fā)中,每個tableView頁面都很復雜,有很多邏輯要處理,這時候只能考慮將protocol重新請回Controller中了,因為View層與ViewController層本身是持有與被持有的依賴關(guān)系,所以任何類作為ViewController的類內(nèi)實例來實現(xiàn)協(xié)議回調(diào),實際上都是在跨層調(diào)用,所以,隨著時間和業(yè)務邏輯的愈來愈復雜,就注定要以額外的接口為代價,換言之,ViewController 的內(nèi)聚性變差了。

總之,具體情況具體分析,采用最合適的方式來處理應對不同的問題。兵來將擋,水來土掩。本文的相關(guān)Demo見github(https://github.com/lovemo/MVVMFramework),實現(xiàn)的功能并不復雜,僅供參考,歡迎補充。

責任編輯:倪明 來源: CocoaChina
相關(guān)推薦

2010-04-29 09:20:27

WEB開發(fā)

2015-10-29 09:35:12

BAT趨勢數(shù)據(jù)

2013-10-08 10:22:14

2019-03-19 19:19:19

Facebook微信轉(zhuǎn)型

2014-06-17 10:57:09

2011-10-31 10:17:47

開發(fā)平臺

2013-01-17 10:09:50

JavaSpring

2021-08-11 18:23:08

數(shù)據(jù)平臺IT

2011-03-17 15:01:11

Oracle

2015-08-03 14:06:44

2009-03-28 09:22:12

MID移動OS

2022-02-13 15:49:15

WebAssemblKubernetes容器

2019-04-15 11:00:46

框架Node.JS開發(fā)

2012-03-29 09:22:56

云計算私有云開發(fā)

2013-01-14 14:28:29

汽車App開發(fā)商

2019-01-23 11:07:32

蘋果諾基亞iPhone

2022-02-28 00:14:30

人工智能數(shù)據(jù)機器學習

2018-08-20 20:22:05

區(qū)塊鏈互聯(lián)網(wǎng)未來

2011-11-01 11:04:20

云計算外包

2009-03-10 19:32:09

Linux桌面虛擬化計世觀點
點贊
收藏

51CTO技術(shù)棧公眾號

一区二区三区美女视频| 九色|91porny| 亚洲视频在线免费看| 天天视频天天爽| 四虎影院观看视频在线观看| aaa国产一区| 国产精品专区h在线观看| 亚洲成人生活片| 蜜桃精品噜噜噜成人av| 91精品国产福利| 国产性xxxx18免费观看视频| 免费黄色在线网站| 久久久噜噜噜久久中文字幕色伊伊| 国产一区欧美二区三区| 国产九色在线播放九色| 亚洲国产日韩欧美在线| 一个色综合导航| 人妖粗暴刺激videos呻吟| 成人激情综合| 婷婷中文字幕一区三区| 中文字幕中文字幕99| 日韩欧美电影在线观看| 福利一区福利二区| 国产日产欧美精品| 天天干天天操天天操| 亚洲高清不卡| 美女福利视频一区| 少妇av片在线观看| 日韩伦理一区二区三区| 精品国产欧美一区二区| 91丨九色丨蝌蚪| 欧美国产日韩电影| 日本韩国一区二区| 18岁网站在线观看| 黄网av在线| 亚洲黄色片在线观看| 中文字幕av日韩精品| а天堂8中文最新版在线官网| av不卡在线播放| 国产三区精品| 亚洲精品一区二区三区蜜桃 | 亚洲一区二区中文在线| 亚洲精品永久www嫩草| 国产精品ⅴa有声小说| 久久先锋资源网| 免费成人在线观看av| 亚洲欧美自偷自拍| 91玉足脚交白嫩脚丫在线播放| 国产成人精品自拍| 欧日韩在线视频| 不卡一区二区中文字幕| 国产区一区二区三区| 高h调教冰块play男男双性文| 高清免费成人av| 亚洲a∨日韩av高清在线观看| 国产又粗又黄视频| 国产一区二区不卡在线| 91精品国产综合久久久久久丝袜| 国产美女无遮挡永久免费| 国产精品综合久久| 成人3d动漫一区二区三区91| a级片在线视频| 成人ar影院免费观看视频| 好吊妞www.84com只有这里才有精品| 成人午夜免费在线观看| 99re这里都是精品| 视频在线精品一区| 韩国中文字幕在线| 夜夜精品视频一区二区 | 黄色在线观看视频网站| 五月天欧美精品| 日韩av资源在线| 久久国内精品| 日韩欧美美女一区二区三区| 看全色黄大色黄女片18| 精品国产一区二区三区噜噜噜| 中文字幕不卡在线视频极品| 欧美特级一级片| 日韩视频在线一区二区三区 | www.久久东京| 亚洲精品视频在线播放| 中文字幕免费在线看线人动作大片| 欧美丝袜一区| 久久99亚洲热视| 国产无套丰满白嫩对白| 久久精品国产亚洲高清剧情介绍 | 在线免费观看av的网站| 精品三级国产| 亚洲男子天堂网| √天堂中文官网8在线| 99精品欧美| 国产精品视频久久久久| www黄色在线观看| 久久久91精品国产一区二区三区| 亚洲 欧洲 日韩| 日韩激情电影| 91精品欧美综合在线观看最新| 色婷婷精品久久二区二区密| 日韩影院二区| 国产91精品高潮白浆喷水| 91福利在线观看视频| av一本久道久久综合久久鬼色| 亚洲高清不卡一区| 9999精品成人免费毛片在线看| 欧美在线观看一二区| 黑森林av导航| 小说区亚洲自拍另类图片专区| 91产国在线观看动作片喷水| 国产精品久久久久久久免费| 91香蕉视频黄| 大荫蒂性生交片| 黄色成人在线观看网站| 亚洲精品乱码久久久久久金桔影视| 懂色av粉嫩av蜜臀av一区二区三区| 99精品国产福利在线观看免费| 成人黄色短视频在线观看| 欧美欧美欧美| 一个色在线综合| 天天操精品视频| 日韩av有码| 日韩av电影在线免费播放| 黄色美女一级片| 亚洲欧美福利一区二区| 亚洲性图一区二区| 国内精品久久久久久久久电影网| 国产综合在线看| 性一交一乱一乱一视频| 中文字幕在线不卡一区| 三级在线视频观看| 国产成人一区二区三区影院| 91国产美女视频| 少妇无码一区二区三区| 亚洲国产一区二区在线播放| 欧美69精品久久久久久不卡 | 日韩少妇内射免费播放| 2023国产精华国产精品| 久久国产精品免费视频| 国产精品久久婷婷| 国产精品久久久爽爽爽麻豆色哟哟| 无码aⅴ精品一区二区三区浪潮| 99精品在免费线中文字幕网站一区 | 亚洲精品成人无码| 国产免费成人| 欧美日韩电影一区二区三区| 性欧美xxx69hd高清| 国产丝袜精品视频| 国产免费观看av| 26uuu亚洲婷婷狠狠天堂| 91成人在线观看喷潮教学| 欧美a大片欧美片| 91av成人在线| 欧美理论在线观看| 欧美这里有精品| 中文字幕第69页| 久久er精品视频| eeuss中文| aaa国产精品视频| 97久久精品国产| 六十路在线观看| 欧美日韩一本到| 777777国产7777777| 国产伦精品一区二区三区在线观看| 精品91一区二区三区| 久久在线观看| 91精品国产99| 黄色毛片在线看| 欧美日韩在线亚洲一区蜜芽| 神马午夜精品91| 成人午夜激情在线| 免费在线观看毛片网站| 久久国产中文字幕| www久久99| 婷婷六月国产精品久久不卡| 日韩亚洲在线观看| 亚洲精品喷潮一区二区三区 | 日本一本二本在线观看| 欧美色女视频| 99精品国产一区二区| 福利影院在线看| 中文字幕一区二区三区电影| 99这里有精品视频| 欧美性xxxx在线播放| 老司机福利在线观看| 国产久卡久卡久卡久卡视频精品| 成人毛片一区二区| 婷婷精品进入| 久久国产精品 国产精品| 国产一区二区三区影视| 欧美黑人巨大xxx极品| 国产在线一在线二| 欧美大片免费久久精品三p| 波多野结衣啪啪| 亚洲精品高清视频在线观看| www.久久国产| 国产**成人网毛片九色 | 国产极品在线视频| 五月天激情综合网| 欧美黄色直播| 成人午夜网址| 成人免费福利视频| 国产免费拔擦拔擦8x高清在线人| 深夜福利日韩在线看| 污污网站免费在线观看| 91精品国产一区二区人妖| 日批视频免费在线观看| 亚洲一区中文在线| 成人涩涩小片视频日本| 国产日韩欧美麻豆| 久久久久亚洲AV成人无码国产| 捆绑调教一区二区三区| 免费黄色特级片| 精品999成人| 久久99国产精品一区| 成人在线亚洲| 国产伦视频一区二区三区| 欧美一级免费| 国产精品久久久久99| 日韩欧美一中文字暮专区| 色综合久久88色综合天天看泰| 国产福利在线视频| 亚洲精品理论电影| 囯产精品久久久久久| 欧美高清视频在线高清观看mv色露露十八| 国产www在线| 亚洲国产精品久久人人爱| 青春草免费视频| 亚洲私人影院在线观看| 美女福利视频网| 国产欧美一区二区精品仙草咪| 国产ts丝袜人妖系列视频 | 欧美亚洲自偷自偷| 欧美乱大交xxxxx潮喷l头像| 亚洲香蕉av| 国产成人精品免费看在线播放| 成人激情电影在线| 天天久久人人| 大色综合视频网站在线播放| 欧美日韩在线一二三| 日韩中出av| 免费日韩av电影| 亚洲桃色综合影院| 欧美专区一二三| 国产一区二区三区四区五区传媒 | 91黄色免费版| 成年人晚上看的视频| 在线免费观看日本欧美| 日本精品入口免费视频| 一本色道久久综合亚洲91| 青青青国产在线| 色婷婷av久久久久久久| www.久久久久久久| 在线观看91精品国产入口| 欧美男人天堂网| 欧美三级电影在线看| 在线免费看毛片| 7777精品久久久大香线蕉| 亚洲性在线观看| 7777精品伊人久久久大香线蕉超级流畅| 国产乱淫片视频| 精品美女在线播放| 手机在线观看毛片| 亚洲欧美在线免费| 91av资源在线| 欧美第一页在线| 亚洲一级少妇| 国产美女搞久久| 免费一级欧美在线大片| 国产精品一区二区三区观看| 日本一区福利在线| 视频一区免费观看| 欧美日本久久| 欧美性大战久久久久xxx| 免费高清在线视频一区·| 一级做a爱视频| 91丨九色丨尤物| 日本在线观看网址| 亚洲自拍偷拍麻豆| 久久久久99精品成人片三人毛片| 欧美在线三级电影| 性网爆门事件集合av| 亚洲精品天天看| 美女免费久久| 国语自产偷拍精品视频偷| 日韩在线免费| 99在线首页视频| 精品久久久亚洲| 国产免费裸体视频| 奇米一区二区三区| 中国黄色片视频| 国产精品国产三级国产三级人妇 | 亚洲AV无码成人精品区明星换面| 亚洲视频中文字幕| 天堂中文在线网| 日韩天堂在线观看| 精品乱码一区二区三四区视频| 欧美不卡视频一区发布| 中文字幕乱码在线播放| 91色在线观看| 国产免费播放一区二区| av在线com| 经典三级在线一区| 无码h肉动漫在线观看| 亚洲一区二区三区美女| 一级片aaaa| 亚洲少妇中文在线| 免费在线看电影| 亚洲aaa激情| 精品视频亚洲| 北条麻妃在线视频观看| 国产一区二区三区日韩| 91狠狠综合久久久久久| 欧美日韩国产中文字幕| www.黄色av| 日日摸夜夜添一区| 日本欧美不卡| 久久久久久国产精品mv| 在线观看一区视频| 九色91porny| 中文字幕在线不卡国产视频| 无码视频一区二区三区| 日韩成人在线视频网站| 丁香高清在线观看完整电影视频| 91精品国产自产在线观看永久| 国模精品一区| 激情综合网俺也去| 久久免费看少妇高潮| 五月天综合激情| 亚洲成人激情图| 国产黄色大片在线观看| 91久久久久久久久久久久久| 成人毛片免费看| 久久久国产欧美| 国产日韩欧美精品一区| 无码人妻一区二区三区免费| 亚洲男人的天堂在线播放| 热色播在线视频| 久久手机视频| 噜噜噜在线观看免费视频日韩| 中文在线永久免费观看| 性做久久久久久免费观看| 黄色一级大片在线免费看国产一| 欧美另类极品videosbestfree| 国产激情精品一区二区三区| 麻豆md0077饥渴少妇| 国产精品一区2区| 中文字幕在线观看成人| 精品少妇一区二区三区在线播放| 成码无人av片在线观看网站| 亚洲xxxx3d| 欧美日韩国产一区精品一区| 国内自拍偷拍视频| 午夜婷婷国产麻豆精品| 五月婷婷在线观看视频| 日本成人精品在线| 欧美日韩激情| 男人添女人下面免费视频| 国产精品激情偷乱一区二区∴| 91中文字幕在线播放| 色综合天天狠天天透天天伊人| 日韩一二三区在线观看| 欧美精品自拍视频| 久久精品在线观看| 91精品国自产| 久久91亚洲人成电影网站| 超碰97久久| 亚洲熟妇av一区二区三区| 国产欧美日韩另类一区| 国产女人18毛片水真多| 久久久女女女女999久久| 希岛爱理av免费一区二区| 最新中文字幕免费视频| 亚洲视频图片小说| 天天操天天射天天| 国产精品爽黄69天堂a| 影音先锋久久久| 最新中文字幕av| 日韩一级完整毛片| 中文字幕乱码在线播放| 手机成人av在线| www.亚洲激情.com| 国产男人搡女人免费视频| 欧美成人激情视频免费观看| 另类在线视频| 亚洲欧洲日本精品| 亚洲超丰满肉感bbw| 一本一道波多野毛片中文在线| 国产精品国产三级欧美二区| 日韩高清一区二区| 九九热国产在线| 国产亚洲精品久久久久久牛牛| 麻豆国产精品| 精品视频无码一区二区三区| 亚洲欧美日韩国产综合在线| 天堂成人在线| 91色视频在线观看| 日韩有码一区二区三区| 婷婷激情四射网| 亚洲一区二区久久久| 国产精品17p| 国产永久免费网站|