色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

教程|基于Actor Framework的MVC設(shè)計(jì)實(shí)現(xiàn)

華穗科技 ? 來源:華穗科技 ? 2022-12-26 16:48 ? 次閱讀

今天我們學(xué)習(xí)如何基于ActorFramework實(shí)現(xiàn)MVC框架的設(shè)計(jì)。

本文教程

基于ActorFramework的MVC設(shè)計(jì)實(shí)現(xiàn)

一、什么是MVC框架

MVC全名是Model View Controller,是模型(model)-視圖(view)-控制器(controller)的縮寫。

Model(模型)表示應(yīng)用程序核心(比如數(shù)據(jù)庫記錄列表)。是應(yīng)用程序中用于處理應(yīng)用程序數(shù)據(jù)邏輯的部分。

View(視圖)顯示數(shù)據(jù)(數(shù)據(jù)庫記錄)。是應(yīng)用程序中處理數(shù)據(jù)顯示的部分。通常視圖是依據(jù)模型數(shù)據(jù)創(chuàng)建的。

Controller(控制器)處理輸入(寫入數(shù)據(jù)庫記錄)。是應(yīng)用程序中處理用戶交互的部分。通常控制器負(fù)責(zé)從視圖讀取數(shù)據(jù),控制用戶輸入,并向模型發(fā)送數(shù)據(jù)。控制器本身不輸出任何東西和做任何處理。它只是接收請(qǐng)求并決定調(diào)用哪個(gè)模型構(gòu)件去處理請(qǐng)求,然后再確定用哪個(gè)視圖來顯示返回的數(shù)據(jù)。

8e21d22e-82bf-11ed-bfe3-dac502259ad0.png

如下圖數(shù)據(jù)庫操作的例子所示,MVC框架形成了一個(gè)閉環(huán),這也符合設(shè)計(jì)模式的開放-封閉原則。用戶與軟件的人機(jī)交互通過Controlloer控制器將用戶輸入的指令和數(shù)據(jù)傳遞給需要進(jìn)行操作的模型,模型內(nèi)部進(jìn)行一系列的算法邏輯,將輸出的結(jié)果反饋給VIEW視圖或更改不同的VIEW來更新不同的界面。用戶根據(jù)修改更新后的VIEW界面,再次進(jìn)行新的人機(jī)交互。

8e46f266-82bf-11ed-bfe3-dac502259ad0.png

接下來我們以一個(gè)擁有加、減法兩個(gè)Model的MVC為例,詳細(xì)講講如何在LabVIEW中實(shí)現(xiàn)Controller、VIEW、Model之間實(shí)現(xiàn)相互通訊的。

2、基于Actor Framework的VIEW

視圖是指用戶看到并與之交互的界面。在視圖中其實(shí)沒有真正的處理發(fā)生,它只是作為一種輸出數(shù)據(jù)并允許用戶操縱的方式。

(1)創(chuàng)建一個(gè)Actor,命名為User Interface。

(2)重寫Actor Core

在項(xiàng)目資源管理器中右鍵User Interface.lvclass→ VI forOverride...,選擇ActorCore.vi,保存ActorCore.vi。

8ebbbfa6-82bf-11ed-bfe3-dac502259ad0.png

(3)在重寫的Actor Core.vi程序框圖中創(chuàng)建一個(gè)“生產(chǎn)者”響應(yīng)用戶界面動(dòng)作。

增加while循環(huán)嵌套事件結(jié)構(gòu)響應(yīng)界面動(dòng)作;

增加Read Self Enqueuer.vi讀取當(dāng)前Actor消息地址。位置:程序框圖 → Data Communication→ Actor Framework→ReadSelf Enqueuer.vi;

增加Read CallerEnqueuer.vi讀取當(dāng)前Actor消息地址。位置:程序框圖→ Data Communication→ Actor Framework→Read CallerEnqueuer.vi;

8ee031ec-82bf-11ed-bfe3-dac502259ad0.png

增加打開、關(guān)閉Actor Core.vi前面板調(diào)用節(jié)點(diǎn);

增加stop注冊(cè)事件停止“生產(chǎn)者”。

8f0083f2-82bf-11ed-bfe3-dac502259ad0.png

8f1a594e-82bf-11ed-bfe3-dac502259ad0.png

如此,一個(gè)可以響應(yīng)用戶操作的VIEW界面的程序框圖就搭完了,接下來我們?cè)赩IEW的前面板加上可以操控的控件。

8f549c58-82bf-11ed-bfe3-dac502259ad0.png

當(dāng)用戶輸入AB兩個(gè)數(shù)值,并按下加或減的按鈕后,VIEW將會(huì)產(chǎn)生事件,并通過調(diào)用Caller的隊(duì)列(即根操作者Controller)來向Controller發(fā)送數(shù)據(jù)和操作指令。

(4)創(chuàng)建結(jié)果控件的引用屬性

由于VIEW不僅需要完成用戶操作和數(shù)據(jù)的發(fā)送,也要完成Model執(zhí)行后的數(shù)據(jù)顯示,如果要在消息里將新值寫入VIEW的前面板控件,那么就需要用到控件的引用,所以我們?cè)赩IEW的屬性中添加數(shù)值控件的引用。

8f72a63a-82bf-11ed-bfe3-dac502259ad0.png

并在VIEW 的Actor Core.vi中,于啟動(dòng)操作者之前將結(jié)果數(shù)值控件的引用寫入屬性中。

(5)創(chuàng)建顯示結(jié)果的消息

當(dāng)Controller把結(jié)果發(fā)送給VIEW時(shí),VIEW需要通過一個(gè)消息將結(jié)果值顯示在前面板上。所以需要?jiǎng)?chuàng)建一個(gè)基于靜態(tài)分配的模板,命名為Update Result.vi。在前面板添加結(jié)果數(shù)值控件,連接接線端并創(chuàng)建消息。

8f8e295a-82bf-11ed-bfe3-dac502259ad0.png

于程序框圖中將結(jié)果數(shù)據(jù)通過剛剛創(chuàng)建的引用放入前面板控件中顯示。

8fb9f422-82bf-11ed-bfe3-dac502259ad0.png

3、 基于Actor Framework的Model

模型表示業(yè)務(wù)規(guī)則,擁有最多的處理任務(wù)。被模型返回的數(shù)據(jù)是中立的,模型與數(shù)據(jù)格式無關(guān),這樣一個(gè)模型能為多個(gè)視圖提供數(shù)據(jù),由于應(yīng)用于模型的代碼只需寫一次就可以被多個(gè)視圖重用,所以減少了代碼的重復(fù)性。

在這里我們創(chuàng)建兩個(gè)Model,一個(gè)用來執(zhí)行加法操作的Model_Add,一個(gè)用來執(zhí)行減法操作的Model_Sub

(1)創(chuàng)建兩個(gè)Actor,命名為Model_Add和Model_Sub。

(2)創(chuàng)建執(zhí)行操作的消息

于加法Model操作者中創(chuàng)建基于靜態(tài)分配模板的VI,命名為Add.vi。于其前面板中添加數(shù)值A(chǔ)與數(shù)值B的控件,連接接線端并為該VI創(chuàng)建消息。Controller發(fā)來的數(shù)據(jù)將會(huì)通過該VI的消息來進(jìn)入Model執(zhí)行對(duì)應(yīng)的操作。

8ff892d6-82bf-11ed-bfe3-dac502259ad0.png

該VI執(zhí)行完加法操作后,需要將結(jié)果返回至Controller,Controller再將結(jié)果更新至VIEW。這樣便完成了一次C到M,M到V的操作。

那么該如何通過消息再將加好的結(jié)果送至Controller呢,就需要用到Controller的發(fā)送消息啦。程序框圖中先預(yù)留Read Caller Enqueue的接口,等Controller和更新數(shù)據(jù)的消息創(chuàng)建完成后再進(jìn)行連接。

901b4d08-82bf-11ed-bfe3-dac502259ad0.png

同樣的,為減法Model也創(chuàng)建一個(gè)用以執(zhí)行減法操作的VI,并創(chuàng)建消息。

4、 基于Actor Framework的Controller

控制器接受用戶的輸入并調(diào)用模型和視圖去完成用戶的需求,控制器本身不輸出任何東西和做任何處理。它只是接收請(qǐng)求并決定調(diào)用哪個(gè)模型構(gòu)件去處理請(qǐng)求,然后再確定用哪個(gè)視圖來顯示返回的數(shù)據(jù)。

(1)創(chuàng)建一個(gè)Actor,命名為Controller。

(2)重寫Actor Core

在項(xiàng)目資源管理器中右鍵User Interface.lvclass→ VI for Override...,選擇Actor Core.vi,保存Actor Core.vi。

(3)于ActorCore中啟動(dòng)所有VIEW和Model

Controller作為MVC結(jié)構(gòu)的大腦,需要調(diào)用分配數(shù)據(jù)給對(duì)應(yīng)的VIEW和Model,所以Controller需要知道它的所有嵌套操作者的隊(duì)列地址。和普通隊(duì)列操作一樣,只有擁有了對(duì)方的地址才可以進(jìn)行數(shù)據(jù)的傳輸。

于Controller的屬性中添加一個(gè)VIEW的隊(duì)列,兩個(gè)Model的隊(duì)列,這樣可以將啟動(dòng)的嵌套操作者的隊(duì)列地址存放進(jìn)Controller的屬性里,等數(shù)據(jù)發(fā)來就可以直接從屬性里取到對(duì)應(yīng)的地址進(jìn)行消息的發(fā)送啦。

90383260-82bf-11ed-bfe3-dac502259ad0.png

905aa4a8-82bf-11ed-bfe3-dac502259ad0.png

于Controller的Actor Core.vi中用Launch Nested Actor啟動(dòng)VIEW和Model,并將產(chǎn)生的隊(duì)列放進(jìn)剛剛創(chuàng)建好的Controller的屬性中。

907de648-82bf-11ed-bfe3-dac502259ad0.png

(4)創(chuàng)建接收VIEW數(shù)據(jù)的消息

于Controller中創(chuàng)建用以接收VIEW數(shù)據(jù)和執(zhí)行操作的消息,創(chuàng)建基于靜態(tài)分配模板的VI,命名為Choose Model.vi。

該VI中創(chuàng)建數(shù)組A和數(shù)值B兩個(gè)數(shù)值輸入控件和一個(gè)枚舉控件,并為其連接接線端,創(chuàng)建消息。

90b3355a-82bf-11ed-bfe3-dac502259ad0.png

枚舉輸入端用以決定VIEW中用戶操作的事件是減法還是加法,數(shù)值輸入端用以將VIEW中傳來的數(shù)據(jù)轉(zhuǎn)發(fā)給對(duì)應(yīng)操作的Model。故于程序框圖中增加條件結(jié)構(gòu),當(dāng)VIEW的操作為加法時(shí),將數(shù)值A(chǔ)和數(shù)值B發(fā)送給Model_Add進(jìn)行加法操作,當(dāng)VIEW的操作為減法時(shí),將數(shù)值A(chǔ)和數(shù)值B發(fā)送給Model_Sub進(jìn)行減法操作。此時(shí)就用到了剛剛存下來的隊(duì)列啦!

90d20340-82bf-11ed-bfe3-dac502259ad0.png

可以看到上圖中對(duì)操作進(jìn)行了判斷,并選取了不同的Model隊(duì)列用來執(zhí)行不同的操作。注意把數(shù)據(jù)發(fā)送給Model的操作是通過之前創(chuàng)建的Model消息來實(shí)現(xiàn)的哦!

(5)創(chuàng)建接收Model數(shù)據(jù)的消息

Controller不僅需要接收VIEW傳來的數(shù)據(jù)和操作,也需要接收Model傳來的執(zhí)行結(jié)果和反饋。

于Controller中創(chuàng)建用以接收Model數(shù)據(jù)和反饋的消息,創(chuàng)建基于靜態(tài)分配模板的VI,命名為Update Data.vi。

該VI中創(chuàng)建一個(gè)結(jié)果數(shù)值控件,連接接線端并創(chuàng)建消息。

90fc5a14-82bf-11ed-bfe3-dac502259ad0.png

由于Controller接收到Model返回的數(shù)值后需要把結(jié)果告知VIEW并顯示,所以在接收Model數(shù)據(jù)的同時(shí)需要將結(jié)果通過消息發(fā)送給VIEW。所以要在接收Model數(shù)據(jù)后向VIEW發(fā)送該結(jié)果數(shù)據(jù)。

913467a6-82bf-11ed-bfe3-dac502259ad0.png

上圖就展示了如何在Controller接收結(jié)果數(shù)據(jù)后發(fā)送給VIEW的程序框圖,圖中運(yùn)用到的發(fā)送Update Result.vi即前面創(chuàng)建過的VIEW消息。

5、 啟動(dòng)程序

所有模塊都構(gòu)建完成,接下來就是啟動(dòng)核心操作者啦。

創(chuàng)建一個(gè)名為Launcher.vi的普通VI,于程序框圖中將Controller啟動(dòng)。

915df5b2-82bf-11ed-bfe3-dac502259ad0.png

啟動(dòng)該VI后,可以看到彈出了VIEW的頁面,輸入數(shù)值A(chǔ)和B后,按下加法按鈕,可以看到結(jié)果控件中展示了加法的結(jié)果。

917a9596-82bf-11ed-bfe3-dac502259ad0.png

6、 MVC鏈路總結(jié)

大家發(fā)現(xiàn)沒有,MVC的鏈路總是一環(huán)套一環(huán),V的操作和數(shù)據(jù)通過消息發(fā)送給Controller,Controller再將其轉(zhuǎn)發(fā)給對(duì)應(yīng)的Model,Model執(zhí)行完畢后又將結(jié)果數(shù)據(jù)發(fā)送給Controller,Controller再將結(jié)果數(shù)據(jù)轉(zhuǎn)發(fā)給VIEW顯示。Controller就是整個(gè)MVC的大腦,它決定了數(shù)據(jù)該去往何處。Model就是執(zhí)行操作的執(zhí)行官,他不考慮這些數(shù)據(jù)是從哪里來的,它只關(guān)心對(duì)這些數(shù)據(jù)的操作,并將結(jié)果返回給調(diào)用它的操作者。而VIEW根本不考慮數(shù)據(jù)的流程和操作,它只用把用戶觸發(fā)的事件通過消息傳送給大腦,再一直接收Controller發(fā)來的數(shù)據(jù)而已。

雖然看起來是密不可分的,但大腦只要知道了數(shù)據(jù)該發(fā)往何處,就可以通過更改隊(duì)列地址來改變數(shù)據(jù)的操作。而VIEW和Model也可以無限擴(kuò)展,只要告訴大腦它們的地址就可以了。

更高級(jí)一些,就是Model和VIEW不通過Controller直接進(jìn)行相互數(shù)據(jù)的發(fā)送,那這就是所謂的MVVM結(jié)構(gòu)啦。

對(duì)于加減法的運(yùn)用來說,MVC架構(gòu)太空太大了,但是對(duì)于更龐大更復(fù)雜的項(xiàng)目呢,考慮使用MVC架構(gòu)和抽象就可以變成低耦合的程序,每個(gè)模塊的修改都可以獨(dú)立于整個(gè)程序,是不是更加方便了呢?

以上就是如何在LabVIEW中為ActorFramework構(gòu)建MVC架構(gòu)的方法。 對(duì)Actor Framework感興趣的工程師們,歡迎持續(xù)關(guān)注、留言和點(diǎn)贊,也可以私信小編各位的技術(shù)困惑和技術(shù)需求,以獲取參加免費(fèi)線下培訓(xùn)和技術(shù)交流的機(jī)會(huì)哦。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 控制器
    +關(guān)注

    關(guān)注

    112

    文章

    16444

    瀏覽量

    179035
  • LabVIEW
    +關(guān)注

    關(guān)注

    1976

    文章

    3657

    瀏覽量

    324972
  • Framework
    +關(guān)注

    關(guān)注

    0

    文章

    24

    瀏覽量

    8624
  • MVC
    MVC
    +關(guān)注

    關(guān)注

    0

    文章

    73

    瀏覽量

    13890

原文標(biāo)題:教程 | 基于Actor Framework的MVC設(shè)計(jì)實(shí)現(xiàn)

文章出處:【微信號(hào):華穗科技,微信公眾號(hào):華穗科技】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    [每周一練]Actor Framework框架(1125-1201)

    。Creat Project里面就大不相同。當(dāng)時(shí)也創(chuàng)建了Actor Framework,體驗(yàn)了一下,感覺看不懂就漸漸淡忘了,也沒有注意這個(gè)框架的名字(因?yàn)椴涣私猓=衲暧幸淮伪粏柕绞欠裰?b class='flag-5'>Actor
    發(fā)表于 11-25 00:04

    sushu---Actor Framework基本介紹

    一練]Actor Framework框架(1125-1201)2016-02-28 20:15:20新寫的一篇帖子:sushu---Actor Framework一種使用方式主貼里面循
    發(fā)表于 01-03 20:05

    sushu---Actor Framework一種使用方式

    :2016-02-27------------------------------在未使用AF之前做了一個(gè)ERP系統(tǒng),新建了一個(gè)頂層類ERP.lvclass.從13年就知曉Actor Framework 斷斷續(xù)續(xù)
    發(fā)表于 02-28 20:40

    Labview Actor Framework 框架使用例子(反饋式蒸發(fā)器)

    工作中遇到老外的項(xiàng)目,用的是Actor Framework框架,所以最近這段時(shí)間學(xué)習(xí)了下。但網(wǎng)上這塊資料非常少,就算是有也是非常簡(jiǎn)單的介紹。后面看到這篇博客http://blog.csdn.net
    發(fā)表于 11-17 19:36

    actor framework 學(xué)習(xí)

    本帖最后由 yingtn 于 2018-2-27 11:47 編輯 各位前輩:小弟在學(xué)習(xí) actor framework 時(shí)遇到了一個(gè)問題:在右擊類新建時(shí)“重寫的VI項(xiàng)”是灰色的,不可選 ,求教?我用的是 labview 2015 32位。
    發(fā)表于 02-27 11:44

    Actor Framework中的定時(shí)結(jié)構(gòu) (LabVIEW中的定時(shí)結(jié)構(gòu)詳解----終)

    了兩個(gè)方案實(shí)現(xiàn)Actor Framework中的定時(shí)結(jié)構(gòu)1.使用上一貼中定時(shí)類,做定時(shí)結(jié)構(gòu),這個(gè)方法是仿寫Unclad的實(shí)例寫的,再實(shí)現(xiàn)一次也沒撒新意。2.利用
    發(fā)表于 06-26 01:18

    Actor Framework -- Test Sequence

    本帖最后由 shenjianym 于 2019-10-29 08:13 編輯 用Actor Framework框架寫了一個(gè)關(guān)于測(cè)試序列(生成隨機(jī)數(shù)并判斷)的程序。該程序使用的是LabVIEW2017版本,加2017版JKL狀態(tài)機(jī)。注:程序跑第二次的時(shí)候會(huì)出現(xiàn)BUG,
    發(fā)表于 10-28 15:28

    LabVIEW Actor Framework學(xué)習(xí)之八皇后

    大家好,我是Richie,為什么把貼子給我刪除了呢,我再試試重新發(fā)一次。本期重點(diǎn):以LabVIEW OOP為基礎(chǔ),使用AF(Actor Framework)框架來編寫程序,對(duì)八皇后問題進(jìn)行求解。歡迎
    發(fā)表于 05-30 20:08

    Actor Framework學(xué)習(xí)之路記錄【一】

    項(xiàng)目中的工作;2、掌握Actor Framework框架,將最近完成的一個(gè)測(cè)試項(xiàng)目進(jìn)行重構(gòu);學(xué)習(xí)內(nèi)容:1、學(xué)習(xí)面向?qū)ο蟮幕A(chǔ)知識(shí):封裝、繼承、多態(tài)、組合2、學(xué)習(xí)Labview中的面向?qū)ο蟮?b class='flag-5'>實(shí)現(xiàn)3、學(xué)習(xí)硬件抽象層HAL4、學(xué)習(xí)
    發(fā)表于 04-14 17:03

    榮小菜補(bǔ)鈣記第33期:基于LabVIEW Actor Framework的連續(xù)測(cè)量和記錄系統(tǒng)1

    榮小菜補(bǔ)鈣記第33期:基于LabVIEW Actor Framework的連續(xù)測(cè)量和記錄系統(tǒng)1 同步更新于 WeChat:榮小菜在補(bǔ)鈣大家好,我是榮小菜,也可以叫我Richie,從本期開始打算開始
    發(fā)表于 05-29 15:32

    榮小菜補(bǔ)鈣記第41期:基于LabVIEW Actor Framework的連續(xù)測(cè)量和記錄系統(tǒng)5

    榮小菜補(bǔ)鈣記第41期:基于LabVIEW Actor Framework的連續(xù)測(cè)量和記錄系統(tǒng)5 同步更新于 WeChat:榮小菜在補(bǔ)鈣歡迎關(guān)注 內(nèi)容更豐富大家好,我是榮小菜,上一期講解了作為框架
    發(fā)表于 07-27 20:55

    在LabVIEW中創(chuàng)建Actor Framework的抽象消息及接口

    由于面向?qū)ο笮枰档婉詈闲裕敲椿陬惖牟僮髡咭残枰紤]如何降低耦合性。當(dāng)Nest Actor給Root Actor發(fā)送消息時(shí),需要調(diào)用Root Actor的消息類的Send ***.vi,這就導(dǎo)致了Nest
    的頭像 發(fā)表于 09-23 10:51 ?7394次閱讀

    在LabVIEW中創(chuàng)建Actor Framework的同步消息

    首先,第一次使用Reply Msg時(shí),繼承關(guān)系中是沒有Reply Msg的,因?yàn)槟J(rèn)Reply Msg不包含在Actor Framework.lvlib中的,需要手動(dòng)添加。
    的頭像 發(fā)表于 11-04 10:33 ?4166次閱讀

    教程|創(chuàng)建你的第一個(gè)Actor Framework

    本文小編將手把手教你如何在LabVIEW中創(chuàng)建你的第一個(gè)Actor Framework,跟著搭建并感受對(duì)象和類的神奇吧!
    的頭像 發(fā)表于 12-26 17:00 ?3723次閱讀

    基于Actor Framework仿真線性編碼器

    在學(xué)習(xí)LabView面向?qū)ο缶幊踢^程中,相信大家也都接觸到了Actor Framework。該框架于2010年NI Week首次公布,經(jīng)過多年不斷迭代更新,逐漸成為LabVIEW中最為重要的并發(fā)開發(fā)框架。
    的頭像 發(fā)表于 12-22 10:15 ?950次閱讀
    基于<b class='flag-5'>Actor</b> <b class='flag-5'>Framework</b>仿真線性編碼器
    主站蜘蛛池模板: 欲奴第一季在线观看全集 | 杨幂被视频在线观看 | 99热久久视频只有精品6国产 | 美女脱了内裤张开腿让男人桶到爽 | 国产精品第3页 | 亚洲午夜精品久久久久久抢 | 99在线观看精品 | 性派对xxxhd 性啪啪chinese东北女人 | 男女交性视频无遮挡全过程 | 乡村教师电影版 | 久久国产亚洲精品AV麻豆 | 99久久久无码国产精品免费人妻 | 狠狠婷婷综合久久久久久 | 亚洲精品久久久无码AV片软件 | 狠狠色丁香久久婷婷综合_中 | 双腿被绑成M型调教PLAY照片 | 精品一品国产午夜福利视频 | 97视频国产| 快播av网址 | 成人性生交大片 | 古代又黄又肉到湿的爽文 | 成年妇女免费播放 | 日韩精品亚洲专区在线电影不卡 | 人妻超级精品碰碰在线97视频 | 国产偷国产偷亚州清高 | 影音先锋亚洲AV少妇熟女 | 国产一区二区免费在线观看 | 久久这里只有精品视频9 | 插骚妇好爽好骚 | 99精品电影一区二区免费看 | 国产一区二区三区国产精品 | 亚洲国产精品VA在线看黑人 | 亚洲国产在线精品国自产拍五月 | FREE另类老女人| 免费果冻传媒2021在线看 | 51精品国产AV无码久久久 | 国产亚洲精品视频亚洲香蕉视 | 快穿做妓女好爽H | 国色天香社区视频免费高清3 | 欧美丰满熟妇无码XOXOXO | 中文字幕中文字幕永久免费 |