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

淺析VO、DTO、DO、PO的概念、區別和用處

開發 前端
對于DTO來說,也有一點必須進行說明,就是DTO應該是一個“扁平的二維對象”,舉個例子來說明:如果User會關聯若干個其他實體(例如Address、Account、Region等),那么getUser()返回的UserInfo,是否就需要把其關聯的對象的DTO都一并返回呢?

本篇文章主要討論一下我們經常會用到的一些對象:VO、DTO、DO和PO。

由于不同的項目和開發人員有不同的命名習慣,這里我首先對上述的概念進行一個簡單描述,名字只是個標識,我們重點關注其概念;

概念

  • VO(View Object):視圖對象,用于展示層,它的作用是把某個指定頁面(或組件)的所有數據封裝起來。
  • DTO(Data Transfer Object):數據傳輸對象,這個概念來源于J2EE的設計模式,原來的目的是為了EJB的分布式應用提供粗粒度的數據實體,以減少分布式調用的次數,從而提高分布式調用的性能和降低網絡負載,但在這里,我泛指用于展示層與服務層之間的數據傳輸對象。
  • DO(Domain Object):領域對象,就是從現實世界中抽象出來的有形或無形的業務實體。
  • PO(Persistent Object):持久化對象,它跟持久層(通常是關系型數據庫)的數據結構形成一一對應的映射關系,如果持久層是關系型數據庫,那么,數據表中的每個字段(或若干個)就對應PO的一個(或若干個)屬性。

模型

下面以一個時序圖建立簡單模型來描述上述對象在三層架構應用中的位置

圖片

  • 用戶發出請求(可能是填寫表單),表單的數據在展示層被匹配為VO。
  • 展示層把VO轉換為服務層對應方法所要求的DTO,傳送給服務層。
  • 服務層首先根據DTO的數據構造(或重建)一個DO,調用DO的業務方法完成具體業務。
  • 服務層把DO轉換為持久層對應的PO(可以使用ORM工具,也可以不用),調用持久層的持久化方法,把PO傳遞給它,完成持久化操作。
  • 對于一個逆向操作,如讀取數據,也是用類似的方式轉換和傳遞,略。

VO與DTO的區別

大家可能會有個疑問(在筆者參與的項目中,很多程序員也有相同的疑惑):既然DTO是展示層與服務層之間傳遞數據的對象,為什么還需要一個VO呢?對!對于絕大部分的應用場景來說,DTO和VO的屬性值基本是一致的,而且他們通常都是POJO,因此沒必要多此一舉,但不要忘記這是實現層面的思維,對于設計層面來說,概念上還是應該存在VO和DTO,因為兩者有著本質的區別,DTO代表服務層需要接收的數據和返回的數據,而VO代表展示層需要顯示的數據。

用一個例子來說明可能會比較容易理解:例如服務層有一個getUser的方法返回一個系統用戶,其中有一個屬性是gender(性別),對于服務層來說,它只從語義上定義:1-男性,2-女性,0-未指定,而對于展示層來說,它可能需要用“帥哥”代表男性,用“美女”代表女性,用“秘密”代表未指定。說到這里,可能你還會反駁,在服務層直接就返回“帥哥美女”不就行了嗎?

對于大部分應用來說,這不是問題,但設想一下,如果需求允許客戶可以定制風格,而不同風格對于“性別”的表現方式不一樣,又或者這個服務同時供多個客戶端使用(不同門戶),而不同的客戶端對于表現層的要求有所不同,那么,問題就來了。再者,回到設計層面上分析,從職責單一原則來看,服務層只負責業務,與具體的表現形式無關,因此,它返回的DTO,不應該出現與表現形式的耦合。

理論歸理論,這到底還是分析設計層面的思維,是否在實現層面必須這樣做呢?一刀切的做法往往會得不償失,下面我馬上會分析應用中如何做出正確的選擇。

VO與DTO的應用

上面只是用了一個簡單的例子來說明VO與DTO在概念上的區別,本節將會告訴你如何在應用中做出正確的選擇。

在以下才場景中,我們可以考慮把VO與DTO二合為一(注意:是實現層面):

  • 需求非常清晰穩定,而且客戶端很明確只有一個的時候,沒有必要把VO和DTO區分開來,這時候VO可以退隱,用一個DTO即可,為什么是VO退隱而不是DTO?回到設計層面,服務層的職責依然不應該與展示層耦合,所以,對于前面的例子,你很容易理解,DTO對于“性別”來說,依然不能用“帥哥美女”,這個轉換應該依賴于頁面的腳本(如JavaScript)或其他機制(JSTL、EL、CSS)
  • 即使客戶端可以進行定制,或者存在多個不同的客戶端,如果客戶端能夠用某種技術(腳本或其他機制)實現轉換,同樣可以讓VO退隱

以下場景需要優先考慮VO、DTO并存:

  • 上述場景的反面場景
  • 因為某種技術原因,比如某個框架(如Flex)提供自動把POJO轉換為UI中某些Field時,可以考慮在實現層面定義出VO,這個權衡完全取決于使用框架的自動轉換能力帶來的開發和維護效率提升與設計多一個VO所多做的事情帶來的開發和維護效率的下降之間的比對。
  • 如果頁面出現一個“大視圖”,而組成這個大視圖的所有數據需要調用多個服務,返回多個DTO來組裝(當然,這同樣可以通過服務層提供一次性返回一個大視圖的DTO來取代,但在服務層提供一個這樣的方法是否合適,需要在設計層面進行權衡)。

DTO與DO的區別

首先是概念上的區別,DTO是展示層和服務層之間的數據傳輸對象(可以認為是兩者之間的協議),而DO是對現實世界各種業務角色的抽象,這就引出了兩者在數據上的區別,例如UserInfo和User,對于一個getUser方法來說,本質上它永遠不應該返回用戶的密碼,因此UserInfo至少比User少一個password的數據。而在領域驅動設計中,正如第一篇系列文章所說,DO不是簡單的POJO,它具有領域業務邏輯。

對于DTO和DO的命名規則,請參見:https://www.cnblogs.com/qixuejia/p/10789612.html

DTO與DO的應用

從上一節的例子中,細心的讀者可能會發現問題:既然getUser方法返回的UserInfo不應該包含password,那么就不應該存在password這個屬性定義,但如果同時有一個createUser的方法,傳入的UserInfo需要包含用戶的password,怎么辦?

在設計層面,展示層向服務層傳遞的DTO與服務層返回給展示層的DTO在概念上是不同的,但在實現層面,我們通常很少會這樣做(定義兩個UserInfo,甚至更多),因為這樣做并不見得很明智,我們完全可以設計一個完全兼容的DTO,在服務層接收數據的時候,不該由展示層設置的屬性(如訂單的總價應該由其單價、數量、折扣等決定),無論展示層是否設置,服務層都一概忽略,而在服務層返回數據時,不該返回的數據(如用戶密碼),就不設置對應的屬性。

對于DO來說,還有一點需要說明:為什么不在服務層中直接返回DO呢?這樣可以省去DTO的編碼和轉換工作,原因如下:

  • 兩者在本質上的區別可能導致彼此并不一一對應,一個DTO可能對應多個DO,反之亦然,甚至兩者存在多對多的關系。
  • DO具有一些不應該讓展示層知道的數據
  • DO具有業務方法,如果直接把DO傳遞給展示層,展示層的代碼就可以繞過服務層直接調用它不應該訪問的操作,對于基于AOP攔截服務層來進行訪問控制的機制來說,這問題尤為突出,而在展示層調用DO的業務方法也會因為事務的問題,讓事務難以控制。
  • 對于某些ORM框架(如Hibernate)來說,通常會使用“延遲加載”技術,如果直接把DO暴露給展示層,對于大部分情況,展示層不在事務范圍之內(Open session in view在大部分情況下不是一種值得推崇的設計),如果其嘗試在Session關閉的情況下獲取一個未加載的關聯對象,會出現運行時異常(對于Hibernate來說,就是LazyInitiliaztionException)。
  • 從設計層面來說,展示層依賴于服務層,服務層依賴于領域層,如果把DO暴露出去,就會導致展示層直接依賴于領域層,這雖然依然是單向依賴,但這種跨層依賴會導致不必要的耦合。

對于DTO來說,也有一點必須進行說明,就是DTO應該是一個“扁平的二維對象”,舉個例子來說明:如果User會關聯若干個其他實體(例如Address、Account、Region等),那么getUser()返回的UserInfo,是否就需要把其關聯的對象的DTO都一并返回呢?

如果這樣的話,必然導致數據傳輸量的大增,對于分布式應用來說,由于涉及數據在網絡上的傳輸、序列化和反序列化,這種設計更不可接受。如果getUser除了要返回User的基本信息外,還需要返回一個AccountId、AccountName、RegionId、RegionName,那么,請把這些屬性定義到UserInfo中,把一個“立體”的對象樹“壓扁”成一個“扁平的二維對象”,筆者目前參與的項目是一個分布式系統,該系統不管三七二十一,把一個對象的所有關聯對象都轉換為相同結構的DTO對象樹并返回,導致性能非常的慢。

DO與PO的區別

DO和PO在絕大部分情況下是一一對應的,PO是只含有get/set方法的POJO,但某些場景還是能反映出兩者在概念上存在本質的區別:

  • DO在某些場景下不需要進行顯式的持久化,例如利用策略模式設計的商品折扣策略,會衍生出折扣策略的接口和不同折扣策略實現類,這些折扣策略實現類可以算是DO,但它們只駐留在靜態內存,不需要持久化到持久層,因此,這類DO是不存在對應的PO的。
  • 同樣的道理,某些場景下,PO也沒有對應的DO,例如老師Teacher和學生Student存在多對多的關系,在關系數據庫中,這種關系需要表現為一個中間表,也就對應有一個TeacherAndStudentPO的PO,但這個PO在業務領域沒有任何現實的意義,它完全不能與任何DO對應上。這里要特別聲明,并不是所有多對多關系都沒有業務含義,這跟具體業務場景有關,例如:兩個PO之間的關系會影響具體業務,并且這種關系存在多種類型,那么這種多對多關系也應該表現為一個DO,又如:“角色”與“資源”之間存在多對多關系,而這種關系很明顯會表現為一個DO——“權限”。
  • 某些情況下,為了某種持久化策略或者性能的考慮,一個PO可能對應多個DO,反之亦然。例如客戶Customer有其聯系信息Contacts,這里是兩個一對一關系的DO,但可能出于性能的考慮(極端情況,權作舉例),為了減少數據庫的連接查詢操作,把Customer和Contacts兩個DO數據合并到一張數據表中。反過來,如果一本圖書Book,有一個屬性是封面cover,但該屬性是一副圖片的二進制數據,而某些查詢操作不希望把cover一并加載,從而減輕磁盤IO開銷,同時假設ORM框架不支持屬性級別的延遲加載,那么就需要考慮把cover獨立到一張數據表中去,這樣就形成一個DO對應對個PO的情況。
  • PO的某些屬性值對于DO沒有任何意義,這些屬性值可能是為了解決某些持久化策略而存在的數據,例如為了實現“樂觀鎖”,PO存在一個version的屬性,這個version對于DO來說是沒有任何業務意義的,它不應該在DO中存在。同理,DO中也可能存在不需要持久化的屬性。

DO與PO的應用

  • 由于ORM框架的功能非常強大而大行其道,而且JavaEE也推出了JPA規范,現在的業務應用開發,基本上不需要區分DO與PO,PO完全可以通過JPA,Hibernate Annotations/hbm隱藏在DO之中。雖然如此,但有些問題我們還必須注意:
  • 對于DO中不需要持久化的屬性,需要通過ORM顯式的聲明,如:在JPA中,可以利用@Transient聲明。
  • 對于PO中為了某種持久化策略而存在的屬性,例如version,由于DO、PO合并了,必須在DO中聲明,但由于這個屬性對DO是沒有任何業務意義的,需要讓該屬性對外隱藏起來,最常見的做法是把該屬性的get/set方法私有化,甚至不提供get/set方法,但對于Hibernate來說,這需要特別注意,由于Hibernate從數據庫讀取數據轉換為DO時,是利用反射機制先調用DO的空參數構造函數構造DO實例,然后再利用JavaBean的規范反射出set方法來為每個屬性設值,如果不顯式聲明set方法,或把set方法設置為private,都會導致Hibernate無法初始化DO,從而出現運行時異常,可行的做法是把屬性的set方法設置為protected。
  • 對于一個DO對應多個PO,或者一個PO對應多個DO的場景,以及屬性級別的延遲加載,Hibernate都提供了很好的支持,請參考Hibnate的相關資料。

到目前為止,相信大家都已經比較清晰的了解VO、DTO、DO、PO的概念、區別和實際應用了。通過上面的詳細分析,我們還可以總結出一個原則:

分析設計層面和實現層面完全是兩個獨立的層面,即使實現層面通過某種技術手段可以把兩個完全獨立的概念合二為一,在分析設計層面,我們仍然(至少在頭腦中)需要把概念上獨立的東西清晰的區分開來,這個原則對于做好分析設計非常重要(工具越先進,往往會讓我們越麻木)。

責任編輯:武曉燕 來源: 碼猿技術專欄
相關推薦

2021-03-08 08:54:12

驅動模型DTODO

2009-09-24 13:39:06

Hibernate VHibernate P

2011-07-08 16:24:53

VOPO

2024-11-29 07:34:36

PO持久化對象

2024-10-16 17:01:17

Java開發SpringBoot

2025-08-14 08:21:17

PODAODTO

2025-02-05 11:00:00

開發Java對象模型

2009-07-08 17:59:51

JDK JRE

2009-04-16 09:24:48

TierLayer系統架構

2024-02-26 12:13:32

C++開發編程

2013-05-03 10:21:53

CentOSRedHat Linu

2009-07-14 15:12:36

SwingSWT和AWT

2009-07-22 18:03:00

ASP.NET ASP

2010-08-17 16:27:40

UPSEPS

2009-06-12 11:35:28

模式框架軟件設計

2009-07-08 10:02:41

Servlet 3.0

2009-08-13 14:06:37

C#結構體結構體和類的區別

2009-08-21 11:31:59

異步和多線程的區別

2010-07-09 09:16:22

UML包圖

2009-08-17 18:04:49

C# 枚舉
點贊
收藏

51CTO技術棧公眾號

蜜桃在线一区| 天堂中文а√在线| 中文亚洲字幕| 国产一区二区av| 色婷婷.com| 好吊日视频在线观看| 国产精品18久久久久久久久| 国产+成+人+亚洲欧洲| 中国毛片在线观看| 四虎精品在线观看| 午夜欧美一区二区三区在线播放| 欧美日韩国产免费一区二区三区 | 亚洲精选一区二区三区| 亚洲综合日本| 久久精品小视频| 国产麻豆xxxvideo实拍| 91p九色成人| 夜夜嗨av一区二区三区中文字幕| 欧美精品亚洲| h狠狠躁死你h高h| 日一区二区三区| 久久久久久久av| 2017亚洲天堂| 亚洲精品一级二级三级| 日韩精品一区二区三区swag | 欧美成人在线免费观看| 国产又大又长又粗| 久久国产精品毛片| 久久久久成人网| 黄色片网站在线播放| 日本久久成人网| 欧美一区二区三区在线| 热久久精品免费视频| 波多野结衣久久| 国产精品久久久99| 久久国产精品高清| 亚洲国产福利视频| 激情亚洲综合在线| 国产精品欧美风情| 国产91精品一区| 在线不卡欧美| 欧美日韩ab片| 99久久99久久精品国产| 欧美一区二区三区高清视频| 亚洲电影免费观看| 乳色吐息在线观看| 久久久加勒比| 日韩欧美精品免费在线| 波多野结衣综合网| 日韩少妇视频| 亚洲精品一二三| 一区二区日本伦理| 1pondo在线播放免费| 久久久久久久综合| 蜜桃精品久久久久久久免费影院| 人成网站在线观看| 成人手机电影网| 99国精产品一二二线| 99精品人妻无码专区在线视频区| 蜜臀av亚洲一区中文字幕| 国产精品91一区| 亚洲欧美一区二区三区在线观看| 国产日韩一区二区三区在线| 午夜精品一区二区三区在线视| 久久久久成人精品无码| 欧美日韩hd| 欧美激情2020午夜免费观看| 青青草手机在线视频| 亚州av乱码久久精品蜜桃| 久久精品成人动漫| 日本老熟俱乐部h0930| 午夜精品久久久久99热蜜桃导演 | 欧美视频日韩视频| 日韩爱爱小视频| 狂野欧美性猛交xxxx| 欧美日韩在线免费视频| 九九九九九国产| 国产高清精品二区| 欧美大片拔萝卜| 欧美大喷水吹潮合集在线观看| 国产香蕉精品| 亚洲精品一区二区久| 摸摸摸bbb毛毛毛片| 日韩免费视频| 欧美另类老女人| 日韩精品视频免费播放| 日韩黄色在线观看| 国产日本欧美在线观看| 国产成人久久精品77777综合 | 免费播放片a高清在线观看| 久久久影院官网| 亚洲欧洲精品一区| 日本在线观看高清完整版| 性欧美大战久久久久久久久| 国产综合免费视频| 日韩欧美专区| 欧美成人乱码一区二区三区| 欧美熟妇一区二区| 久久精品播放| 久久久亚洲影院你懂的| 国产精品va无码一区二区三区| 日韩av在线播放中文字幕| 成人免费视频网| 五月天福利视频| 国产精品美女视频| 欧美视频在线观看视频| 吞精囗交69激情欧美| 欧美日韩国产另类一区| 久久国产免费视频| 欧美日韩老妇| 久久久久久成人| 中国老头性行为xxxx| 粉嫩绯色av一区二区在线观看 | 一片黄亚洲嫩模| 国产成人a亚洲精v品无码| 国产精品色婷婷在线观看| 日韩精品免费在线视频观看| 国产女人18水真多毛片18精品| 99av国产精品欲麻豆| 成人福利网站在线观看11| 人妻视频一区二区三区| 中文字幕一区二区三| 丰满少妇被猛烈进入高清播放| 91成人app| 亚洲欧美国内爽妇网| 九九热精品在线观看| 奇米影视一区二区三区小说| 国产女人水真多18毛片18精品| 最新97超碰在线| 精品久久久久久久久久国产| 91aaa精品| 国产影视一区| 国产91|九色| 亚洲第一视频在线播放| 中文字幕一区二区三中文字幕| 欧美牲交a欧美牲交| 粉嫩久久久久久久极品| 久久久国产精彩视频美女艺术照福利| 亚洲va在线观看| jvid福利写真一区二区三区| 日本大胆人体视频| 91精品国产一区二区在线观看 | 一区二区视频观看| 欧美一区不卡| 51精品国产人成在线观看 | 欧美激情三级免费| 国产乱人乱偷精品视频a人人澡| 亚洲国产精品激情在线观看| 欧美s码亚洲码精品m码| 欧美黑人巨大videos精品| 久久99久久99精品中文字幕| 国产精品视频一二区| 中文字幕中文字幕在线一区| 香蕉视频禁止18| 国产一区二区在线| 国产成人中文字幕| 黄色av网址在线免费观看| 色综合天天狠狠| av网站免费在线播放| 亚洲欧美日韩专区| 欧美久久久久久一卡四| 欧美最新精品| 亚洲人成电影网站色| 中文字幕在线看人| 国产欧美日韩亚州综合| 天堂中文视频在线| 日韩在线高清| 91久久精品国产91久久性色| v片在线观看| 精品免费一区二区三区| 国产稀缺真实呦乱在线| aaa欧美色吧激情视频| 成年人视频网站免费观看| 国产成人精品三级高清久久91| 国产va免费精品高清在线观看| 国产露出视频在线观看| 欧美日韩夫妻久久| 中文字幕在线有码| 成人av免费在线播放| 97超碰青青草| 四虎成人av| 91青青草免费观看| 日本在线啊啊| 中文字幕在线日韩 | 日本女优在线视频一区二区| 一本色道久久综合亚洲精品婷婷 | 成人午夜小视频| 黑人另类精品××××性爽| 亚洲欧美日韩国产精品| 亚洲一区二区色| 亚洲午夜一区二区三区| 久久精品老司机| 久久机这里只有精品| 800av在线免费观看| 西瓜成人精品人成网站| 成人精品网站在线观看| 国产福利片在线观看| 国产亚洲美女久久| xxxx18国产| 色av综合在线| 国产高潮国产高潮久久久91| 久久久久久亚洲综合| 一级黄色大片儿| 久久国产直播| av 日韩 人妻 黑人 综合 无码| 亚洲美女久久| 亚洲va欧美va在线观看| 樱桃视频成人在线观看| 久久亚洲国产精品| 日本护士...精品国| 日韩三级电影网址| 国产午夜无码视频在线观看| 亚洲综合色成人| 黄色片网站免费| 成人深夜在线观看| 亚洲xxx在线观看| 免费久久99精品国产自在现线| 亚洲欧洲另类精品久久综合| 色狠狠久久av综合| 999视频在线观看| 超薄肉色丝袜脚交一区二区| 97热精品视频官网| av网址在线| 中文日韩在线观看| 色播色播色播色播色播在线| 日韩一级大片在线观看| 91成人国产综合久久精品| 色综合天天综合| 精品美女久久久久| 亚洲黄色小视频| 顶级黑人搡bbw搡bbbb搡| 久久综合色一综合色88| 一级黄色片毛片| 国产成人三级在线观看| 中文字幕色网站| 免费观看在线色综合| 波多野结衣50连登视频| 亚洲精品1区| 欧美狂野激情性xxxx在线观| 亚洲成人免费| 先锋影音男人资源| 日韩欧美字幕| 亚洲国产欧洲综合997久久 | 日韩精品在线私人| 人妻少妇一区二区三区| 精品国产人成亚洲区| 免费看国产片在线观看| 精品日本一线二线三线不卡| 99久久久久久久| 日韩一区二区电影| 午夜精品久久久久久久99老熟妇| 欧美一区二区三区日韩| 国产亲伦免费视频播放| 制服丝袜中文字幕一区| 国产麻豆一精品一男同| 欧美一区二区国产| 国内毛片毛片毛片毛片| 日韩精品一区二区在线观看| 性一交一乱一伧老太| 精品国产免费久久| 四虎免费在线观看| 亚洲毛片在线看| 国产毛片av在线| www.欧美三级电影.com| 老司机在线永久免费观看| 久久不射电影网| 午夜av在线免费观看 | 色在线视频观看| 欧洲一区二区视频| 国产成人精品123区免费视频| 国产精品xxxxx| 亚州欧美在线| 成人黄视频免费| 欧美日韩麻豆| 日本高清不卡三区| 欧美激情电影| 浴室偷拍美女洗澡456在线| 黄色另类av| 国产l精品国产亚洲区久久| 男男成人高潮片免费网站| 国产亚洲视频一区| 国产69精品一区二区亚洲孕妇| 欧美一区二区免费在线观看| 国产亚洲人成网站| av黄色免费在线观看| 一区二区三区四区av| 五月天婷婷久久| 6080yy午夜一二三区久久| 亚洲第一色网站| 亚洲一区二区久久久| 国产在线看片| **欧美日韩vr在线| 男人亚洲天堂| 成人影片在线播放| 精品国产乱码久久久久久1区2匹| 伊人精品久久久久7777| 99成人精品| 91视频这里只有精品| 成人性生交大片免费看中文 | 精品国产精品国产偷麻豆| 日本老太婆做爰视频| 久久成人一区| 中文字幕久久久久久久| 国产日韩一级二级三级| 欧美日韩大片在线观看| 欧美性大战久久久| 好吊视频一二三区| 色哟哟网站入口亚洲精品| 国产伦久视频在线观看| 成人亚洲激情网| 外国成人在线视频| 91免费版看片| 日韩电影在线免费看| 欧美xxxxx精品| 亚洲婷婷国产精品电影人久久| 啦啦啦免费高清视频在线观看| 7777精品伊人久久久大香线蕉完整版 | 亚洲激情女人| 日本美女久久久| 成人不用播放器| 黑人与娇小精品av专区| 99精品久久久久久中文字幕| 一区二区福利视频| 精精国产xxxx视频在线野外| 91社区国产高清| 日韩理论片av| 亚洲国产精品久久久久爰色欲| 国产乱码精品一区二区三| 我不卡一区二区| 福利一区福利二区微拍刺激| www.国产免费| 久久精品中文字幕一区| 精品国产黄a∨片高清在线| 欧美精品一区二区三区在线看午夜| 欧美日韩亚洲一区| 亚洲日本黄色片| 欧美国产综合一区二区| 69视频免费看| 亚洲老头老太hd| 在线免费看h| 噜噜噜噜噜久久久久久91| 亚洲大胆在线| 任你躁av一区二区三区| 亚洲一区中文日韩| 草逼视频免费看| 九九热这里只有精品免费看| 少妇高潮一区二区三区99| 一级做a爰片久久| 老司机免费视频一区二区| 能直接看的av| 欧美午夜精品久久久久久孕妇| 久草在线免费福利资源| 欧洲成人免费aa| 久久不见久久见国语| 国产精品-区区久久久狼| 久久精品亚洲麻豆av一区二区 | 三级视频网站在线| 奇米影视亚洲狠狠色| 一本色道久久综合亚洲精品酒店 | 中文字幕欧美激情极品| 欧美色涩在线第一页| 免费大片黄在线| 3d动漫啪啪精品一区二区免费| 欧美伊人久久| 午夜不卡久久精品无码免费| 五月天激情综合| 深夜福利视频在线观看| 国产成人精品网站| 色乱码一区二区三区网站| 99国产精品久久久久久| 亚洲综合自拍偷拍| 日韩欧美在线观看一区二区| 国产91在线播放精品91| 日本在线电影一区二区三区| 在线播放av中文字幕| 亚洲影院在线观看| 三区在线观看| 国产精品自产拍高潮在线观看| 亚洲精品在线观看91| 亚洲自拍偷拍精品| 色就色 综合激情| 成人在线播放免费观看| 精品国产一区二区三区免费| 久久中文字幕一区二区三区| 激情高潮到大叫狂喷水| 欧美精品一区二区三区在线| 日韩电影大全网站| 精品一区二区三区毛片| av一本久道久久综合久久鬼色| 激情五月婷婷网| 粗暴蹂躏中文一区二区三区| 日韩a级大片| 欧美伦理片在线观看| 亚洲已满18点击进入久久| 国产一级片在线| 国产99午夜精品一区二区三区| 久久精品亚洲一区二区| 日韩一区二区三区四区在线| 精品在线观看国产| 国产一区二区三区国产精品|