日韩精品在线观看一区二区三区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

您的姓名 *
您的電話 *
您的郵箱
公司名稱 *
主站蜘蛛池模板: 精品亚洲视频在线观看 | 国产护士av| 久久久久久久久久亚洲精品 | 在线 成人 | 操操操日日 | 国产精品福利久久久 | 亚洲一区黄色 | 六月激情网 | 欧美精品在线观看 | 婷婷精品国产欧美精品亚洲人人爽 | 久精品在线 | 99这里只有久久精品视频 | 国产免码va在线观看免费 | 中文字幕在线免费播放 | 天天爽天天爽天天爽 | 国产一区在线观看免费 | 91亚洲精品久久久蜜桃 | 色综合小说 | 久久久久久国产精品美女 | 久草在线视频免费资源观看 | 插婷婷| 亚洲精品乱码久久久久久9色 | 国产精品久久久久久超碰 | 欧美做受高潮1 | 免费视频一区 | 玖玖精品视频 | 碰超人人| 午夜成人免费电影 | 午夜在线观看影院 | 在线观看成人av | 欧美最猛性xxxxx(亚洲精品) | 人人玩人人添人人 | 精品一区 在线 | 二区在线播放 | 狠狠五月天 | 五月天免费网站 | av在线免费网站 | 99产精品成人啪免费网站 | 国产精品久久久久影院日本 | 中文在线字幕免费观看 | 色噜噜色噜噜 | 91mv.cool在线观看 | 欧美一区二区在线刺激视频 | 美女在线免费视频 | 伊人久操 | 国产精品人人做人人爽人人添 | 国产丝袜高跟 | 欧美精品久久久久 | 国产精品久久久久久一区二区三区 | 中文字幕在线观看你懂的 | 五月婷婷六月综合 | 干天天 | 天天综合91| 在线视频 一区二区 | 中文字幕成人网 | 狠狠狠狠狠狠狠狠 | 天天狠狠 | 国产呻吟在线 | 91亚洲精品国偷拍自产在线观看 | 国产免费三级在线观看 | 一区二区三区免费播放 | 全黄网站 | 国产精品国产亚洲精品看不卡 | 啪啪午夜免费 | 亚洲综合精品视频 | 九九九九热精品免费视频点播观看 | 探花视频免费观看 | 亚洲爱av | 国产免费亚洲高清 | 天天色官网| 久久精品中文字幕一区二区三区 | 91香蕉视频黄 | 美女网站在线观看 | 夜夜躁狠狠躁日日躁视频黑人 | 亚洲乱码在线观看 | 九九免费在线观看 | 久久久久 免费视频 | 操操操天天操 | 国产精品丝袜久久久久久久不卡 | 中文字幕在线观看完整版电影 | 在线观看91精品视频 | 综合五月婷婷 | 国产视频一 | www黄色av| 福利视频导航网址 | 久久精品99国产精品酒店日本 | 亚洲人成人99网站 | 国产激情电影综合在线看 | 欧美精品久久久 | 在线 国产 日韩 | 欧美日韩一区二区在线观看 | 亚洲国内精品视频 | 欧洲av不卡 | 国产一区二区在线播放 | 在线观看a视频 | 日韩美女一级片 | 亚洲精品在线国产 | 国内成人精品视频 | 九九热在线观看视频 | 国产不卡视频在线播放 | 日韩a在线播放 | 婷婷播播网 | 日韩理论电影网 | 久久久免费观看视频 | 欧美日韩久久不卡 | 99久久er热在这里只有精品66 | 成年人精品 | 伊人天天狠天天添日日拍 | 一区二区视频在线观看免费 | 国产精品99久久99久久久二8 | 亚洲欧美日韩国产精品一区午夜 | 国产丝袜一区二区三区 | 久草影视在线 | 成人精品99 | 成年人免费看 | 9在线观看免费高清完整版在线观看明 | 亚州中文av| 国产精品美女久久久久久2018 | 808电影免费观看三年 | 美女搞黄国产视频网站 | 亚洲黄色激情小说 | 狂野欧美激情性xxxx欧美 | 日韩精品国产一区 | 人人涩| 97国产大学生情侣白嫩酒店 | 国产精品永久免费在线 | 色婷婷电影网 | 免费一级黄色 | 一级黄色在线视频 | 一区二区三区久久精品 | 久久久精品 一区二区三区 国产99视频在线观看 | 亚洲一区二区三区毛片 | 你操综合 | 狠狠ri | 日韩二区三区在线观看 | 免费黄色av电影 | 伊人色综合久久天天网 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 超碰公开在线观看 | 一区二区三区高清 | 色www免费视频 | 亚洲九九九在线观看 | 精品亚洲免费 | 免费在线观看毛片网站 | 久久福利国产 | 日韩电影中文字幕在线 | 美女视频黄网站 | 免费看黄在线观看 | 黄色一级免费网站 | 五月天久久激情 | 亚洲综合视频在线 | 人九九精品 | av高清免费在线 | 5月丁香婷婷综合 | 丁香高清视频在线看看 | 色婷婷 亚洲 | 97品白浆高清久久久久久 | 日韩激情视频在线观看 | 国产精品一区二区三区电影 | 久久伦理影院 | 激情综合五月婷婷 | 可以免费观看的av片 | 国产三级午夜理伦三级 | 亚洲欧洲国产精品 | 深夜免费小视频 | 亚洲国产成人精品在线观看 | 在线电影av| 五月天中文字幕 | 丝袜美腿av | 中文字幕韩在线第一页 | 六月丁香六月婷婷 | 91福利国产在线观看 | 狠狠干美女 | 8x8x在线观看视频 | 欧美日韩中文另类 | zzijzzij亚洲日本少妇熟睡 | 91av视屏 | 97超碰色 | 国产精品久久久久国产精品日日 | 国产美女网 | 日本久久久亚洲精品 | 午夜狠狠干 | sesese图片| 91九色在线 | 一区二区不卡视频在线观看 | 99精品免费久久久久久久久日本 | 欧美日韩一二三四区 | 久草观看视频 | 成人a级黄色片 | 狠狠色丁香久久婷婷综合五月 | 韩国一区二区三区在线观看 | 久久精品日产第一区二区三区乱码 | 日韩国产欧美视频 | 香蕉视频4aa| 欧美韩日精品 | 91亚洲精品久久久蜜桃 | 8x成人免费视频 | 亚洲视频免费在线 | avove黑丝| 欧美在线91| 九月婷婷人人澡人人添人人爽 | 国产不卡高清 | 久久久久国产精品免费免费搜索 | 人人草人人做 | 国产精品毛片一区视频 | 欧美日韩不卡在线观看 | 国产高清中文字幕 | 日韩久久一区二区 | 91黄色在线视频 | 亚洲精品美女久久久久网站 | 粉嫩高清一区二区三区 | 国产高清视频在线 | 91亚色视频 | 色就色,综合激情 | 日韩欧美高清免费 | 九九国产精品视频 | 国产亚洲精品久久久久动 | 在线观看视频你懂 | 特级大胆西西4444www | 中文字幕一区二区三区视频 | 国内成人精品2018免费看 | 亚洲成人精品国产 | 欧美成人aa | 91在线影院 | 成人亚洲精品国产www | 蜜臀aⅴ精品一区二区三区 久久视屏网 | 久草视频在线资源站 | 超碰97久久| 日韩av一区二区三区 | 1区2区视频 | 成年人毛片在线观看 | 91成人精品一区在线播放69 | 国产精品免费高清 | 国产二级视频 | 91av小视频 | 亚洲 中文 在线 精品 | 黄色影院在线观看 | 五月婷在线视频 | 又湿又紧又大又爽a视频国产 | 久久精久久精 | 狠狠操狠狠干天天操 | 国产中文字幕在线看 | 91久久爱热色涩涩 | 丝袜美腿一区 | 成人在线电影观看 | 五月婷网站| 丁香激情视频 | 亚洲精品国产综合久久 | www.久久精品视频 | 久久国产精彩视频 | 丁香在线 | 成人在线播放网站 | 蜜桃视频成人在线观看 | 狠狠色丁香婷婷综合久小说久 | 在线成人国产 | 国产精品久久久久国产精品日日 | 香蕉视频国产在线观看 | 久久a级片 | 亚洲国产资源 | 一区二区三区av在线 | 日韩av在线影视 | 成人在线观看网址 | 国产一区影院 | 亚洲少妇天堂 | 成人av中文字幕在线观看 | 亚洲激情综合 | 成人在线网站观看 | 亚洲乱码久久久 | 成人在线视频在线观看 | 激情五月婷婷综合网 | 久久综合久久综合这里只有精品 | 久久黄色美女 | 91精品在线播放 | 丁香六月色 | 欧美日韩一区二区三区在线免费观看 | 国产不卡毛片 | 黄色在线观看免费网站 | 美女久久视频 | a视频免费在线观看 | 亚洲精品中文字幕视频 | 国产精品精品久久久久久 | 九九爱免费视频在线观看 | 99视频在线免费观看 | 亚洲欧美视频一区二区三区 | av免费在线免费观看 | 日韩av午夜| av免费黄色 | 日韩欧美精品一区二区 | 99精品区| 国产人成在线视频 | 国产999精品久久久影片官网 | 91插插插网站 | 日韩在线观看中文字幕 | 国产99久久99热这里精品5 | 成人在线免费av | 午夜丰满寂寞少妇精品 | 99精品国产aⅴ | 亚洲午夜精品一区二区三区电影院 | 99色视频 | 激情综合国产 | 久久国内视频 | 久久久电影网站 | 日韩中文字幕电影 | 丁香视频全集免费观看 | 97精品一区 | 色www永久免费 | 五月天婷亚洲天综合网鲁鲁鲁 | 麻豆国产精品一区二区三区 | 久久99国产精品 | 欧美欧美 | 玖玖视频国产 | 人人爽人人爽人人 | 在线观看国产www | 日韩乱码在线 | 色99久久| 免费高清影视 | 夜夜天天干 | 国产亚洲在线 | 伊人久久电影网 | 18久久久久 | 国产在线日韩 | 日韩在线一级 | 国产精品专区在线观看 | 久久久99精品免费观看乱色 | 欧美精品资源 | www.夜夜操 | 国产97在线视频 | 99精品欧美一区二区 | avwww在线| 国产高清不卡 | 九九视频免费观看视频精品 | 免费a级观看 | 九九九视频精品 | 国产人成在线观看 | 欧美精品在线视频 | 久久久久久久影院 | 中文字幕麻豆 | 国产精品白浆视频 | 天天插狠狠干 | 国产999精品久久久久久 | 天堂av官网 | 九色精品免费永久在线 | 91传媒在线播放 | 黄色性av| 国产成人精品久久久 | 日韩欧美在线影院 | 久久在线免费观看视频 | 一本一本久久a久久 | 97视频入口免费观看 | 日韩精品大片 | 国产一区二三区好的 | 91亚洲精品在线 | 涩涩资源网 | 亚洲精品综合欧美二区变态 | 不卡视频一区二区三区 | 免费黄色网止 | 国产福利不卡视频 | 亚洲综合成人在线 | 欧美精品国产综合久久 | 最近中文字幕第一页 | 日韩视频精品在线 | 婷婷五月在线视频 | 人人人爽 | 亚洲国产精彩中文乱码av | 国精产品999国精产品视频 | 国产精品 国内视频 | 欧美性一级观看 | 91免费视频网站在线观看 | 999亚洲国产996395 | 黄色一级大片在线免费看国产一 | 久久久免费观看 | 国产麻豆剧果冻传媒视频播放量 | 成人三级视频 | av在线电影网站 | 国产精品国产三级国产不产一地 | 精品一区在线 | 色多多污污| 婷婷av电影| 六月色 | 欧美大片aaa | 在线观看午夜 | av高清免费在线 | 六月激情网 | 成人av影视观看 | 中文字幕91在线 | 天干啦夜天干天干在线线 | 黄色一级大片在线免费看国产一 | 精品国产乱码久久久久久三级人 | 一级淫片a| 一区二区三区视频在线 | 日本韩国中文字幕 | 又色又爽的网站 | 久久免费国产视频 | 丁香视频全集免费观看 | 久久久精品电影 | 人人澡超碰碰 | 国产一区黄色 | 天天干天天草天天爽 | 夜夜操天天操 | 97成人精品视频在线观看 | 中文字幕中文字幕在线中文字幕三区 | 国产精品一区久久久久 | 中文字幕高清免费日韩视频在线 | 国产美女被啪进深处喷白浆视频 | 丝袜美腿亚洲 | 国产视频在线观看一区二区 | av成年人电影 | 天天色天天色 | 日韩在线在线 | 香蕉国产91 | av在线不卡观看 | 国产精品自拍在线 | 热re99久久精品国产66热 | a成人在线| 精品国产精品国产偷麻豆 | 久久精品—区二区三区 | 国产成人精品一区二区在线观看 | 一区二区高清在线 | av在线电影免费观看 | 亚洲欧美综合 | 久久国产视频网站 | 天天干夜夜操视频 | 97在线观| 97在线视频免费观看 | 欧美激情综合色综合啪啪五月 | 国产精品久久艹 | 日韩高清免费无专码区 | a级国产乱理论片在线观看 伊人宗合网 | 国产在线观看二区 | 三级在线视频观看 | 国产美女免费观看 | 中文字幕.av.在线 | 美女视频是黄的免费观看 | 免费99视频 | 国产原创在线视频 | 久草视频免费播放 | 97视频在线免费播放 | 天天插日日射 | 亚洲aaa毛片 | 91黄色在线视频 | 国内久久视频 | 99r精品视频在线观看 | 久久久久久蜜桃一区二区 | 69久久99精品久久久久婷婷 | 丁香高清视频在线看看 | 99理论片 | 天天色婷婷 | 国产二级视频 | 香蕉影视在线观看 | 日本特黄一级片 | 国内精品久久久久久久久 | 日韩视频中文字幕在线观看 | 黄色免费视频在线观看 | 成年人视频免费在线播放 | 婷婷激情综合网 | 欧美久久久一区二区三区 | 西西444www大胆高清图片 | 少妇高潮冒白浆 | 精品国产成人在线影院 | 日韩性网站 | 国产精品正在播放 | 草草草影院 | 日批网站在线观看 | 激情视频国产 | 欧美孕妇与黑人孕交 | www黄色大片 | 久久视频在线观看 | 最新国产在线 | 免费日韩 精品中文字幕视频在线 | 国产在线观看污片 | 二区视频在线观看 | 国产一级电影免费观看 | 99在线观看| 97超碰在线视 | 免费看片网址 | 在线观看中文字幕第一页 | 色综合天天综合网国产成人网 | 亚洲三级在线播放 | 九色精品免费永久在线 | 国产亚洲成av人片在线观看桃 | 69国产盗摄一区二区三区五区 | av网站在线观看免费 | 黄网站免费看 | 一区二区三区免费在线播放 | 日韩综合一区二区三区 | 麻豆精品国产传媒 | 成人中文字幕在线 | 婷婷伊人综合亚洲综合网 | 青青河边草免费直播 | 国际精品久久 | 91专区在线观看 | 精品视频一区在线 | 免费视频xnxx com | 久久久亚洲精品 | 久久免费视频观看 | 国产精品久久久久av福利动漫 | 亚洲综合狠狠干 | 成人精品一区二区三区电影免费 | 国产精品一区二区白浆 | 精品久久久久久亚洲 |