日韩精品在线观看一区二区三区I亚洲欧美aI日韩欧美精品在线I激情九九I欧美一a一片一级一片I中文字幕一区二区人妻痴汉电车I日韩欧美中文字幕精品I国精产品一区一区三区免费视频I免费观看黄色avI日韩黄色成人I91呦呦I国产精品一区在线观看你懂的I久久久天堂I日韩精品国产精品I色呦呦免费观看I国产在线中文字幕I精品人人妻人人澡人人爽牛牛I狠狠做六月爱婷婷综合aⅴI无码人妻少妇伦在线电影I国产一级做a爰片久久毛片99

首頁 > 新聞 > 知識賦能

[北京網站制作]API設計新思維:用流暢接口構造內部DSL

2011-10-31 10234
分享至:

API設計新思維:用流暢接口構造內部DSL

程序設計語言的抽象機制包含了兩個最基本的方面:一是語言關注的基本元素/語義;另一個是從基本元素/語義到復合元素/語義的構造規則。在C、C++、Java、C#、Python等通用語言中,語言的基本元素/語義往往離問題域較遠,通過API庫的形式進行層層抽象是降低問題難度最常用的方法。比如,在C語言中最常見的方式是提供函數庫來封裝復雜邏輯,方便外部調用。(北京網站制作)

不過普通的API設計方法存在一種天然的陷阱,那就是不管怎樣封裝,大過程雖然比小過程抽象層次更高,但本質上還是過程,受到過程語義的制約。也就是說,通過基本元素/語義構造更高級抽象元素/語義的時候,語言的構造規則很大程度上限制了抽象的維度,我們很難跳出這個維度去,甚至可能根本意識不到這個限制。而SQL、HTML、CSS、make等DSL(領域特定語言)的抽象維度是為特定領域量身定做的,從這些抽象角度看問題往往最為簡單,所以DSL在解決其特定領域的問題時比通用程序設計語言更加方便。通常,SQL等非通用語言被稱為外部DSL(External DSL);在通用語言中,我們其實也可以在一定程度上突破語言構造規則的抽象維度限制,定義內部DSL(Internal DSL)。

本文將介紹一種被稱為流暢接口(Fluent Interface)的內部DSL設計方法。Wikipedia上Fluent Interface的定義是:

 

A fluent interface (as first coined by Eric Evans and Martin Fowler) is an implementation of an object oriented API that aims to provide for more readable code. A fluent interface is normally implemented by using method chaining to relay the instruction context of a subsequent call (but a fluent interface entails more than just method chaining)。

下面將分4個部分來逐步說明流暢接口在構造內部DSL中的典型應用。

1.基本語義抽象

如果要輸出0..4這5個數,我們一般會首先想到類似這樣的代碼:

  1.  //Java  
  2. for (int i = 0; i < 5; ++i) {  
  3. system.out.println(i);  
  4. }   
  5.  

而Ruby雖然也支持類似的for循環,但最簡單的是下面這樣的實現:

  1. //Ruby  
  2. .times {|i| puts i}   

Ruby中一切皆對象,5是Fixnum類的實例,times是Fixnum的一個方法,它接受一個block參數。相比for循環實現,Ruby 的times方式更簡潔,可讀性更強,但熟悉OOP的朋友可能會有疑問,times是否應該作為整型類的方法呢?在OOP中,方法調用通常代表了向對象發送消息,改變或查詢對象的狀態,times方法顯然不是對整型對象狀態的查詢和修改。如果你是Ruby的設計者,你會把times方法放入Fixnum類嗎?如果答案是否定的,那么Ruby的這種設計本質上代表了什么呢?實際上,這里的times雖然只是一個普通的類方法,但它的目的卻與普通意義上的類方法不同,它的語義實際上類似于for循環這樣的語言基本語義,可以被視為一種自定義的基本語義。times的語義從一定程度上跳出了類方法的框框,向問題域邁進了一步!

另一個例子來自Eric Evans的“用兩個時間點構造一個時間段對象”,普通設計:

  1. 3 //Java  
  2. TimePoint fiveOClock, sixOClock;  
  3. TimeInterval meetingTime = new TimeInterval(fiveOClock, sixOClock);   
  4.  

另一種Evans的設計是這樣:

  1. 2 //Java  
  2. TimeInterval meetingTime = fiveOClock.until(sixOClock);   

按傳統OO設計,until方法本不應出現在TimePoint類中,這里TimePoint類的until方法同樣代表了一種自定義的基本語義,使得表達時間域的問題更加自然。

雖然上面的兩個簡單例子和普通設計相比看不出太大的優勢,但它卻為我們理解流暢接口打下了基礎。重要的是應該體會到它們從一定程度上跳出了語言基本抽象機制的束縛,我們不應該再用類職責劃分、迪米特法則(Law of Demeter)等OO設計原則來看待它們。

2.管道抽象

在Shell中,我們可以通過管道將一系列的小命令組合在一起實現復雜的功能。管道中流動的是單一類型的文本流,計算過程就是從輸入流到輸出流的變換過程,每個命令是對文本流的一次變換作用,通過管道將作用疊加起來。在Shell中,很多時候我們只需要一句話就能完成log統計這樣的中小規模問題。和其他抽象機制相比,管道的優美在于無嵌套。比如下面這段C程序,由于嵌套層次較深,不容易一下子理解清楚:

  1. 2 //C  
  2. min(max(min(max(a,b),c),d),e)   

而用管道來表達同樣的功能則清晰得多:

  1.  
  2. 2 #!/bin/bash  
  3. max a b | min c | max d | min e   
  4.  

我們很容易理解這段程序表達的意思是:先求a,b的最大值;再把結果和c取最小值;再把結果和d求最大值;再把結果和e求最小值。

jQuery的鏈式調用設計也具有管道的風格,方法鏈上流動的是同一類型的jQuery對象,每一步方法調用是對對象的一次作用,整個方法鏈將各個方法的作用疊加起來。

  1. 2 //Javascript  
  2. $('li').filter(':event').css('background-color', 'red');   
  3.  

3.層次結構抽象

除了管道這種“線性”結構外,流暢接口還可用于構造層次結構抽象。比如,用Javascript動態創建創建下面的HTML片段:

  1. <div id="’product_123’" class="’product’"> 
  2. <img src="’preview_123.jpg’" alt="" /> 
  3. <ul> 
  4. <li>Name: iPad2 32Gli> 
  5. <li>Price: 3600li> 
  6. ul> 
  7. div>   
  8.  

若采用Javascript的DOM API:

  1. //Javascript  
  2. var div = document.createElement('div');  
  3. div.setAttribute(‘id’, ‘product_123’);  
  4. div.setAttribute(‘class’, ‘product’);  
  5.  
  6. var img = document.createElement('img');  
  7. img.setAttribute(‘src’, ‘preview_123.jpg’);  
  8. div.appendChild(img);  
  9.  
  10. var ul = document.createElement('ul');  
  11. var li1 = document.createElement('li');  
  12. var txt1 = document.createTextNode("Name: iPad2 32G");  
  13. li1.appendChild(txt1);  
  14. …  
  15. div.appendChild(ul);   
  16.  

而下面流暢接口API則要有表現力得多:

  1. //Javascript  
  2. var obj =  
  3. $.div({id:’product_123’, class:’product’})  
  4. .img({src:’preview_123.jpg’})  
  5. .ul()  
  6. .li().text(‘Name: iPad2 32G’)._li()  
  7. .li().text(‘Price: 3600’)._li()  
  8. ._ul()  
  9. ._div();  

和Javascript的標準DOM API相比,上面的API設計不再局限于孤立地看待某一個方法,而是考慮了它們在解決問題時的組合使用,所以代碼的表現形式特別貼近問題的本質。這樣的代碼是自解釋的(self-explanatory)在可讀性方面要明顯勝于DOM API,這相當于定義了一種類似于HTML的內部DSL,它擁有自己的語義和語法。需要特別注意的是,上面的層次結構抽象和管道抽象有著本質的不同,管道抽象的方法鏈上通常是同一對象的連續傳遞,而層次抽象中方法鏈上的對象卻在隨著層次的變化而變化。此為,我們可以把業務規則也表達在流暢接口中,比如上面的例子中,body()不能包含在div()返回的對象中,div().body()將拋出”body方法不存在”異常。(高端網站建設)

4.異步抽象

流暢接口不僅可以構造復雜的層次抽象,還可以用于構造異步抽象。在基于回調機制的異步模式中,多個異步調用的同步和嵌套問題是使用異步的難點所在。有時一個稍復雜的調用和同步關系會導致代碼充滿了復雜的同步檢查和層層回調,難以理解和維護。這個問題從本質上講和上面HTML的例子一樣,是由于多數通用語言并未把異步作為基本元素/語義,許多異步實現模式是向語言的妥協。針對這個問題,我用Javascript編寫了一個基于流暢接口的異步DSL,示例代碼如下:

  1. //Javascript  
  2. $.begin()  
  3. .async(newTask('task1'), 'task1')  
  4. .async(newTask('task2'), 'task2')  
  5. .async(newTask('task3'), 'task3')  
  6. .when()  
  7. .each_done(function(name, result) {  
  8. console.log(name + ': ' + result);})  
  9. .all_done(function(){ console.log('good, all completed'); })  
  10. .timeout(function(){  
  11. console.log('timeout!!');  
  12. $.begin()  
  13. .async(newTask('task4'), 'task4')  
  14. .when()  
  15. .each_done(function(name, result) {  
  16. console.log(name + ': ' + result); })  
  17. .end();}  
  18. , 3000)  
  19. .end();   

上面的代碼只是一句Javascript調用,但從另一個角度看它卻像一段描述異步調用的DSL程序。它通過流暢接口定義了begin when end的語法結構,begin后面跟的是啟動異步調用的代碼;when后面是異步結果處理,可以選擇each_done, all_done, timeout中的一種或多種。而begin when end結構本身是可以嵌套的,比如上面的代碼在timeout處理分支中就包含了另一個begin when end結構。通過這個DSL,我們可以比基于回調的方式更好地表達異步調用的同步和嵌套關系。

上面介紹了用流暢接口構造的4種典型抽象,出此之外還有很多其他的抽象和應用場合,比如:不少單元測試框架就通過流暢接口定義了單元測試的DSL。雖然上面的例子以Javascript等動態語言居多,但其實流暢接口所依賴的語法基礎并不苛刻,即使在Java這樣的靜態語言中,同樣可以輕松地使用。流暢接口不同于傳統的API設計,理解和使用流暢接口關鍵是要突破語言抽象機制帶來的定勢思維,根據問題域選取適當的抽象維度,利用語言的基本語法構造領域特定的語義和語法。

來源聲明:

本文章系尚品中國編輯原創或采編整理,如需轉載請注明來自尚品中國。以上內容部分(包含圖片、文字)來源于網絡,如有侵權,請及時與本站聯系(010-60259772)。

立即預約專屬顧問 開啟數字化轉型之旅!

10年+資深項目經理1V1服務 | 行業定制化方案 | 精準報價體系
獲取策劃方案
立即預約專屬顧問 開啟數字化轉型之旅!

咨詢我們,獲得專業的服務和報價

聯系我們,免費獲取項目方案及報價,或只是聊一聊您的項目? 在收到您的需求留言后我們將由專業人員于24小時內與您取得聯系,請您保持電話暢通!

  • 科研院所解決方案
  • 外貿出海解決方案
  • 協會學會解決方案
  • 集團上市公司解決方案
  • 生物醫藥解決方案
  • 制造業解決方案
  • 高校教育解決方案
  • 信創網站改造解決方案
更多服務咨詢,請聯系尚品

010-60259772

您的姓名 *
您的電話 *
您的郵箱
公司名稱 *
主站蜘蛛池模板: 麻豆91视频 | 国产九九在线 | 在线视频1卡二卡三卡 | 欧美日韩中文国产 | h动漫中文字幕 | 国产亚洲精品久久久久久久久久 | 国产免费黄视频在线观看 | 国产精品麻豆一区二区三区 | 成人免费中文字幕 | 国产视频精品久久 | 激情 婷婷| 天天激情综合网 | 精品在线观看一区二区 | 亚洲激情在线播放 | 久久国产午夜精品理论片最新版本 | 欧美激情综合色综合啪啪五月 | av亚洲产国偷v产偷v自拍小说 | 狠狠色丁香婷婷综合久久片 | 欧美一二三区在线播放 | 免费黄色特级片 | 在线观看网站黄 | 久草网站在线观看 | 国产高清在线永久 | 2023国产精品自产拍在线观看 | 亚洲国产丝袜在线观看 | 久草在线免费播放 | 久草网首页 | 国产资源 | 久久精品91久久久久久再现 | 激情伊人五月天久久综合 | 亚洲精品成人av在线 | 国产亚洲视频中文字幕视频 | 91porny九色在线播放 | 亚洲综合在线播放 | 国产麻豆视频网站 | 四虎在线观看精品视频 | 国产精品69久久久久 | 九精品 | 亚洲精品在线二区 | 日韩在线视频线视频免费网站 | 日本护士三级少妇三级999 | av免费网站观看 | www五月天婷婷 | 91免费黄视频 | 亚洲国内精品视频 | 人人狠狠| 国产精成人品免费观看 | 国产亚洲精品成人av久久影院 | 婷婷干五月 | av电影在线播放 | 国产精品 视频 | 日韩在线观看第一页 | 中国成人一区 | 亚洲粉嫩av | 黄污视频网站大全 | 97在线精品视频 | 欧美精品视 | 亚洲乱码中文字幕综合 | 91福利影院在线观看 | 999精品网 | 久久久高清视频 | 日本精品一区二区在线观看 | 久久久www成人免费精品张筱雨 | 一区二区不卡 | 久久图| 日韩av一区二区三区在线观看 | av网站手机在线观看 | 天天干天天碰 | 久久亚洲电影 | 精品不卡av| 首页国产精品 | 午夜婷婷在线观看 | 日韩欧美视频一区二区三区 | 青青啪| 国产精品6999成人免费视频 | 久久99视频| 黄色一集片 | 人人看看人人 | 国模精品在线 | 欧美激情视频一二三区 | 欧美一二区视频 | 国产专区第一页 | 亚洲综合在线视频 | 国产精品观看在线亚洲人成网 | 久久久久久久久久久精 | 成人资源网 | 人人添人人澡人人澡人人人爽 | 天天躁日日躁狠狠躁av麻豆 | 免费观看mv大片高清 | 国产亚洲成av片在线观看 | 久久国产免费看 | 久久久久久久久久久国产精品 | 亚洲精品在线一区二区三区 | 久久久免费看 | 国产剧情在线一区 | 亚洲电影免费 | 在线黄色免费 | 视频1区2区 | 人人射人人爱 | 国产精品扒开做爽爽的视频 | 日韩欧美视频 | 色99网| 五月婷香 | 91片在线观看 | 国产精品不卡在线观看 | 国内精品免费 | 欧美大片在线看免费观看 | 黄色精品国产 | 99精品国产一区二区三区麻豆 | 久久成人国产精品免费软件 | 免费av视屏 | 精品视频9999 | 99r在线视频| 韩国一区二区三区在线观看 | 成人免费av电影 | 日韩国产在线观看 | 国产91精品一区二区麻豆网站 | 91香蕉视频在线下载 | av视屏在线播放 | 国产精品美女999 | 日韩一区二区三区免费视频 | 国产精品成人自拍 | www.com在线观看| 国产电影一区二区三区四区 | 日韩视频欧美视频 | 天天干天天做天天爱 | 日日操日日插 | 国产精品免费视频一区二区 | 在线亚洲精品 | 手机在线免费av | 精品久久久久久久久久岛国gif | 三级av免费看 | 中文字幕亚洲国产 | 亚州国产精品 | 国产少妇在线观看 | 国产破处在线播放 | 亚洲精品午夜一区人人爽 | 婷婷久草 | 日韩视频免费播放 | 二区精品视频 | 中文在线免费观看 | 日韩视频在线观看免费 | 狠狠色狠狠色合久久伊人 | 日韩在线播放视频 | 91日韩在线 | 色婷婷激婷婷情综天天 | 精品免费99久久 | 天天天天色射综合 | 三级黄色大片在线观看 | 97人人视频 | 免费精品国产va自在自线 | 黄色国产成人 | 国产小视频在线 | 亚洲黄色影院 | 久久久国产精品视频 | 中文字幕 二区 | 日韩欧美在线高清 | 久久婷婷国产色一区二区三区 | 超碰在线人人艹 | av在线com | 美女激情影院 | 蜜臀久久99精品久久久酒店新书 | 色欧美88888久久久久久影院 | 免费黄色av. | 欧美综合干 | 久久在线观看视频 | 欧美国产日韩一区 | 伊人五月天| 国产一区免费 | 久久久99精品免费观看乱色 | 国产精品video | 国产又粗又硬又长又爽的视频 | 99超碰在线播放 | 亚洲永久精品一区 | 探花视频在线观看免费 | 91精品啪在线观看国产 | 日韩电影在线一区 | 97精品欧美91久久久久久 | 久久艹在线观看 | 久草视频视频在线播放 | 亚洲不卡av一区二区三区 | 亚洲欧洲一级 | 一区二区在线影院 | 久久99精品国产91久久来源 | 欧洲精品码一区二区三区免费看 | 成人免费xxx在线观看 | 亚洲激情 在线 | 国产美女免费观看 | 808电影免费观看三年 | 中文字幕av有码 | 精品国自产在线观看 | 国产不卡在线观看视频 | 2019天天干天天色 | 日韩毛片在线免费观看 | 久久最新 | av福利超碰网站 | 天天干天天操天天爱 | 玖玖视频| 国产精品久久久777 成人手机在线视频 | 一区二区不卡视频在线观看 | 三级av网站 | 日韩av一区二区在线播放 | 91九色国产视频 | 手机av在线免费观看 | 免费在线色电影 | 在线激情小视频 | 久久久久欠精品国产毛片国产毛生 | 91一区啪爱嗯打偷拍欧美 | 天天干夜夜想 | 亚洲久草在线视频 | 黄色小网站免费看 | 六月丁香婷 | 久久久精品一区二区 | 久久男人中文字幕资源站 | 91在线91拍拍在线91 | 美国人与动物xxxx | 精品国产aⅴ一区二区三区 在线直播av | a天堂在线看 | 黄色在线网站噜噜噜 | 天天操天天操天天操 | 91在线看| 欧美巨乳网 | 久人人 | 免费三级影片 | 国产成人61精品免费看片 | 国产精品久久久久久久免费观看 | 成人影音在线 | 人人玩人人爽 | 91精品视频免费在线观看 | 人人干狠狠干 | 日韩精品中文字幕在线播放 | 久久精品老司机 | 三级黄色免费 | 天天鲁天天干天天射 | 精品 激情 | 手机在线看永久av片免费 | 国产精品国产毛片 | 欧美精品一区二区性色 | 国产福利小视频在线 | 粉嫩av一区二区三区四区在线观看 | 国产女做a爱免费视频 | 日韩av中文字幕在线免费观看 | 日韩激情av在线 | 成人欧美亚洲 | 成人丝袜| 久久久综合精品 | 青青河边草免费直播 | 很黄很黄的网站免费的 | 婷婷六月天丁香 | 国产一区黄色 | 日韩中字在线观看 | 国产视频一区二区三区在线 | 欧美最新另类人妖 | 国产成人精品一区二区三区 | 亚洲天堂网在线视频 | 日韩久久精品一区二区三区 | h视频在线看 | 四虎影视成人永久免费观看视频 | 久久论理 | 欧美资源在线观看 | 日韩精品一区二区三区不卡 | 91精品一区二区三区久久久久久 | 久草在线电影网 | 三级动态视频在线观看 | 亚洲精品美女久久久 | 亚洲四虎影院 | 国产精品不卡在线播放 | 免费看一级特黄a大片 | 国产一级高清 | 欧美亚洲成人免费 | 久久久在线视频 | 日韩a级黄色片 | 日本精品久久久久影院 | 国产手机精品视频 | 亚洲欧美激情精品一区二区 | 国产精品久久久久久久免费观看 | 中文字幕久久精品 | 麻豆视频国产在线观看 | 91在线看视频免费 | 日韩女同一区二区三区在线观看 | 国产高清永久免费 | 日韩在线观看视频中文字幕 | 亚洲国产精品va在线看 | 天天爽夜夜爽精品视频婷婷 | 日韩在线观看的 | 久久亚洲美女 | 久久综合影音 | 婷婷六月天丁香 | 米奇影视7777 | 激情校园亚洲 | 999成人免费视频 | 激情中文在线 | 成人三级视频 | 日韩大片在线免费观看 | 欧美二区视频 | 久久久国产一区 | 久久99免费| 91精品国产综合久久婷婷香蕉 | 最近免费中文视频 | 亚洲 综合 精品 | 丁香六月婷婷开心 | av色综合| 三级黄在线 | 天天干天天干天天干 | 久久少妇 | 成人久久网 | 久久久69 | 日日操日日干 | 婷五月激情 | 午夜成人免费电影 | 九九视频精品免费 | 激情视频一区二区三区 | 国产在线欧美在线 | 国产一区视频在线播放 | 国产一级大片免费看 | 日日爽夜夜操 | 黄色国产高清 | 在线国产一区 | 日韩影视精品 | 99久久99热这里只有精品 | 青春草免费视频 | 超碰97免费观看 | 日韩免费在线观看网站 | 免费久久网| 91麻豆精品久久久久久 | 97色国产 | 黄色av免费电影 | 日韩和的一区二在线 | 精品国产1区2区 | 国产99久久久精品 | 香蕉视频啪啪 | 伊人国产女 | 天天射天 | 一区二区三区影院 | av一区二区三区在线播放 | 国产一区精品在线 | 中文在线免费一区三区 | 欧美激情视频在线观看免费 | 91视频啊啊啊 | 欧美一级裸体视频 | av在线在线 | 2021国产在线 | 免费在线观看av不卡 | 日韩av免费在线电影 | 久久99国产精品免费网站 | 日韩中文在线播放 | 婷婷激情综合五月天 | 97超碰成人在线 | 国产激情久久久 | 中国一级片免费看 | 亚洲午夜精品久久久 | 亚洲一区二区三区四区在线视频 | 国产精品va在线 | 国产精品免费久久久久久久久久中文 | 日韩黄色免费 | 国产精品久久在线观看 | 欧美久久久 | 99精品视频网站 | 久草在线视频在线观看 | 中文字幕在线播出 | 欧美性天天 | 青青河边草手机免费 | 制服丝袜亚洲 | 亚洲综合色丁香婷婷六月图片 | 久久尤物电影视频在线观看 | 色婷婷国产在线 | 99理论片| 国产精品久久久久久久久蜜臀 | 免费黄色激情视频 | 日韩精品久久久久久久电影99爱 | 久久久久久久久久久精 | 日本女人的性生活视频 | 97超碰伊人 | 亚洲精品理论 | 国产精品久久久久毛片大屁完整版 | 欧洲高潮三级做爰 | 日韩av网站在线播放 | 国产成人亚洲在线观看 | 色综合网| 怡春院av | 啪啪动态视频 | 99热最新在线 | 国产美女网站视频 | 天天色成人网 | 色视频在线 | 一区二区三区四区五区在线 | av东方在线 | 久久久久这里只有精品 | 欧美日本一二三 | 97在线免费观看视频 | 色哟哟国产精品 | 午夜视频色| 日韩专区视频 | 激情五月网站 | 91久久国产综合精品女同国语 | 成人免费观看视频网站 | 一区二区欧美日韩 | 日日摸日日爽 | 五月开心激情网 | 国产在线一线 | www亚洲一区 | 精品高清视频 | 六月丁香婷婷在线 | 欧美综合在线观看 | 日韩欧美第二页 | 黄色成人在线观看 | 国产精品久久久久久久久免费看 | 91精品一区二区三区蜜臀 | 日韩av在线不卡 | 狠狠狠狠狠狠狠狠 | 日韩欧美高清一区二区 | 日韩高清在线观看 | av成人在线看 | 久久久资源 | 精品国产一区二区三区久久久蜜臀 | 亚洲天堂精品 | 91人人揉日日捏人人看 | 欧美日韩国产亚洲乱码字幕 | 啪啪免费观看网站 | 97精品在线观看 | 2023av在线| 手机在线看永久av片免费 | 日韩高清在线一区二区三区 | 久久国产网 | 91九色免费视频 | 色国产在线 | 操操操日日 | 免费高清在线视频一区· | 黄色大片免费网站 | 香蕉影视在线观看 | 中文字幕电影网 | 亚洲一区精品二人人爽久久 | 色福利网站 | 久久黄色精品视频 | 免费视频一二三 | 久久少妇av | 亚洲视频一区二区三区在线观看 | 久久无码精品一区二区三区 | 久久精品一区二区三区四区 | 日韩视频一区二区在线观看 | 亚洲精品一区二区三区高潮 | 狠狠色丁香久久婷婷综合_中 | 精品99免费 | 波多野结衣在线视频一区 | 久久看看 | av播放在线 | 中文字幕一区二区三区四区在线视频 | 亚洲精品国产自产拍在线观看 | www.黄色片网站 | 一区在线观看视频 | 久久大视频| 九色最新网址 | 久久亚洲私人国产精品va | 久久99久久99精品免观看软件 | 黄a在线看 | 国产一级一片免费播放放 | 国产成人一区二区三区在线观看 | 婷婷狠狠操 | av在线日韩 | 欧美国产日韩一区二区三区 | 日日夜夜草 | 99热这里只有精品免费 | 欧美天堂视频在线 | 日韩免费不卡av | 国产最新91 | 精品国产伦一区二区三区观看体验 | 亚洲aⅴ乱码精品成人区 | 天天人人综合 | 91欧美视频网站 | 搡bbbb搡bbb视频| 亚洲一区二区精品视频 | av在线com| 色资源二区在线视频 | 日韩在线观看网站 | 蜜臀av免费一区二区三区 | 亚洲欧洲av| av观看在线观看 | av电影在线不卡 | 福利一区二区在线 | 日韩理论 | 久久国精品 | 日韩久久久久久久久 | 69久久99精品久久久久婷婷 | 美女网站视频免费黄 | 在线观看免费 | 欧美日韩在线播放一区 | 91黄视频在线观看 | 久草视频手机在线 | 成人a大片| 亚洲高清免费在线 | 国产中文a | 午夜婷婷在线播放 | 一性一交视频 | 成年人视频在线观看免费 | 欧美一区三区四区 | 久久精品精品电影网 | 国产手机av | 91精品区| 欧美色888| 91在线视频观看 |