久久精品国产精品国产精品污,男人扒开添女人下部免费视频,一级国产69式性姿势免费视频,夜鲁夜鲁很鲁在线视频 视频,欧美丰满少妇一区二区三区,国产偷国产偷亚洲高清人乐享,中文 在线 日韩 亚洲 欧美,熟妇人妻无乱码中文字幕真矢织江,一区二区三区人妻制服国产

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

万字长文助你上手软件领域驱动设计 DDD

發布時間:2024/2/28 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 万字长文助你上手软件领域驱动设计 DDD 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

作者:faryrong,騰訊 CSIG 后臺開發工程師

最近看了一本書《解構-領域驅動設計》,書中提出了領域驅動設計統一過程(DDDRUP),它指明了實踐 DDD 的具體步驟,并很好地串聯了各種概念、模式和思想。因此,我對書本內容做了梳理、簡化,融入自己的理解,并結合之前閱讀的書籍以及實踐經驗,最終形成這篇文章。希望可以幫助大伙理順 DDD 的各種概念、模式和思想,降低上手 DDD 的門檻。

1.背景

領域驅動設計(DDD)由 Eric Evans 提出,并一經《領域驅動設計:軟件核心復雜性應對之道》的發布,在軟件行業中引起了不少的轟動。DDD 提供的一種新穎的,甚至有點“另類”的思維方式,它在告訴軟件開發者“我們要用業務方案來解決業務問題,而不是技術方案解決業務問題”,有點魔法打敗魔法的意思。DDD 雖然讓人眼前一亮,但是所提倡的理念有點“違背直覺”(對開發人員而言),因此,在當時并沒有流行開來。

后來,微服務架構的興起,大伙驚奇地發現 DDD 是作為劃分“微服務邊界”的一把利器,并且 DDD 提及的很多設計理念與微服務架構十分契合,因此 DDD 逐漸被開發者們接受并流行起來。毫不夸張地說,了解和學習 DDD 可以算得上是如今軟件行業從業者的一門必修課了。

但是!DDD 的學習曲線較為陡峭。作為一個小白,翻閱過很多相關的書籍、KM 文章和分享,但始終覺得未得要領、一知半解。原因有二:a) DDD 涉及的概念繁多,且不同概念的抽象層次不一樣,如果我們直白地去理解,往往會感到疑惑,比如:子域和限界上下文都是用于將問題進行歸類和收斂,他們的區別是什么?b)缺少過程指導,難以將概念有序的串聯起來。作為方法論,DDD 給出了設計思想,核心原則以及常用工具,但是卻缺少細致有序的方法步驟,導致難以上手實踐。

幸運的是,最近看了一本書《解構-領域驅動設計》。這本書提出了領域驅動設計統一過程(DDDRUP),它指明了實踐 DDD 的具體步驟,并很好地串聯了各種概念、模式和思想。因此,我對書本內容做了梳理、簡化,融入自己的理解,并結合之前閱讀的書籍以及實踐經驗,最終形成這篇文章。希望可以幫助大伙理順 DDD 的各種概念、模式和思想,降低上手 DDD 的門檻。

2.DDD 概要與實踐感悟

經典必讀書籍《領域驅動設計:軟件核心復雜性應對之道》的書名包含了兩個關鍵詞:領域驅動復雜性,分別代表了 DDD 的核心原則以及解決的問題。

2.1 復雜性

系統的復雜性往往并不在技術上,而是來自領域本身、用戶的活動或業務服務。當這種領域復雜性在設計中沒有得到解決時,基礎技術的構思再好也是無濟于事。而系統的復雜度體現在三個方面:規模、結構變化

規模:指的是系統所支持的功能點,以及功能點與功能點之間的的關系。DDD 通過子領域,限界上下文,聚合等模式對問題進行拆分和歸類,不斷收窄問題域,保證聚合邊界內所解決的問題集合足夠收斂和可控。

結構:指的是系統架構。系統架構是否分層;若分層,每層劃分的職責邊界是否清晰;架構的基本管理單元是什么,它決定了架構演進時的復雜度。DDD 通過分層架構,獨立出領域層,且架構中的每層都有清晰的職責。整體架構的基本管理單元是聚合,它是一個完整的、自治的管理單元,當需要進行服務拆分時,可以直接以聚合作為基本單元進行拆分。

變化:指的是系統響應需求變化的能力。快速響應變化的有效手段是分離不易變邏輯和易變邏輯,"以不變應萬變"。而通過分層架構獨立的領域層正是不易變的邏輯。領域層是對領域知識的封裝,其提供的領域服務具有經驗性和前瞻性,是對領域內穩定的領域規則的表達。而領域層以外的應用層和基礎設施層則是易變邏輯的封裝。保證核心的獨立和穩定,通過在調整應用層和基礎設施層來實現快速響應需求變化。

2.2 領域驅動

領域驅動指的是以領域作為解決問題切入點,面對業務需求,先提煉出領域概念,并構建領域模型來表達業務問題,而構建過程中我們應該盡可能避免牽扯技術方案或技術細節。而編碼實現更像是對領域模型的代碼翻譯,代碼(變量名、方法名、類名等)中要求能夠表達領域概念,讓人見碼明義。

結合實踐經驗,以下是本人對“領域驅動”的一些見解:

思維模式轉變

實踐 DDD 以前,我最常使用的是數據驅動設計。它的核心思路針對業務需求進行數據建模:根據業務需求提煉出類,然后通過 ORM 把類映射為表結構,并根據讀寫性能要求使用范式優化表與表之間的關聯關系。數據驅動是從技術的維度解決業務問題,得出的數據模型是對業務需求的直接翻譯,并沒有蘊含穩定的領域知識/規則。一旦需求發生變化,數據模型就得發生變化,對應的庫表的設計也需要進行調整。這種設計思維導致變化從需求穿透到了數據層,中間并沒有穩定的,不易變的層級進行阻隔,最終導致系統響應變化的能力很差。

協同方式轉變

過去由產品同學提出業務需求,研發同學根據業務需求的 tapd 進行技術方案設計,并編程實現。

這種協同方式的弊端在于:無法形成能夠消除認知差異的模型。產品同學從業務角度提出用戶需求,這些需求可能是易變的、定制化的,而研發同學在缺少行業經驗的情況下,往往會選擇直譯,即根據需求直接轉換為數據模型。而研發同學從技術實現角度設計技術方案,其中涉及很多的技術細節,產品同學無法從中判斷是否與自己提出的業務訴求和產品規劃相一致,最終形成認知差異。且認知差異會隨著迭代不斷被放大,最后系統變成一個大泥球。

DDD 通過解鎖新角色”領域專家"以及模型驅動設計,有效地降低產品和研發的認知差異。領域專家是具有豐富行業經驗和領域知識儲備的人,他們能夠在易變的、定制化的需求中提煉出清晰的邊界,穩定的、可復用的領域概念和業務規則,并攜手產品和研發共同構建出領域模型。領域模型是對業務需求的知識表達形式,它不涉及具體的技術細節(但能夠指導研發同學進行編程實現),因此消除了產品和研發在需求認知上的鴻溝。而模型驅動設計則要求領域模型能夠關聯業務需求和編碼實現,模型的變更意味著需求變更和代碼變更,協作圍繞模型為中心。

精煉循環

精煉循環指的是在統一語言,提煉領域概念,明確邊界,構建模型,綁定實現過程中,這些環節相互影響和反饋,在不斷的迭代試錯-調整以最終沉淀出穩定的、深層次的模型的過程。比如,我們在提煉領域概念的時候會覺得統一語言定義不合理/有歧義,此時我們就會調整統一語言的定義,并重新進行提煉領域概念。通過精煉循環,我們逐步形成穩定的領域模型。在 DDD 中,讓領域專家來主導概念提煉、邊界劃分等宏觀設計,原因就在于領域專家的經驗和行業洞見來源于過去已經迭代的無數個精煉循環,因此由這些宏觀設計推導出來的領域模型,往往都是非常穩定的。

精煉循環的核心是循環,它避免知識只朝單一方向流動,最終因各環節上的認知差異,最終導致模型無法在產品、領域專家和研發中達成一致、模型與實現割裂。

2.3 怎么才算 DDD?

我早期實踐 DDD 的時候,認為代碼分層遵循四層架構就是 DDD,抑或分離接口和實現,實現下沉至基礎設施層就是 DDD,實則不然。結合上述內容,目前個人認為只要滿足以下條件即為實踐 DDD:

  • 構建出產品、領域專家和研發同學認知一致且便于交流的模型,并且模型與實現緊密綁定;

  • 模型逐步演進,反復消化和精煉;

  • 模型蘊含領域知識,足夠穩定。

3.問題空間&解空間

3.1 問題空間&解空間

問題空間和解空間并非 DDD 特有的概念,而是人們為了區分真實世界和理念世界而提出的概念。問題空間表示的是真實世界,是具體的問題、用戶的訴求,而解空間則是針對問題空間求解后構建的理念世界,其中包括了解決方案、模型等。

DDD 提出的戰略設計覆蓋了問題空間和解空間,而戰術設計則聚焦在解空間上。明確 DDD 中的概念是作用于問題空間還是解空間,更有助于我們理解它們。

3.2 示例-學生管理系統的問題空間

學生管理系統(Student Management System,下文簡稱 SMS)作為 DDDRUP 的講解示例,以下為其問題空間的描述。

學校需要構建一個學生管理系統(Student Management System, SMS)。通過這個管理系統,學生可以進行選課,查詢成績,查詢績點。而老師則可以通過這個系統錄入授課課程的成績。錄入的分數會由系統自動換算為績點,規則如下:若分數>= 90,績點為4.0;90>= 分數> 80,績點為3.0;80 >= 分數 > 70,績點為2.0;70 >= 分數 >= 60,績點為1.0;成績< 60,則沒有績點,并郵件通知教務員,由教務員聯系學生商榷重修事宜。成績錄入后的一周內,若出現錄入成績錯誤的情況,老師可提交修改申請,由教務員審核后即可完成修改。審核完成后系統會通過郵件告知老師審核結果。一周后成績將鎖定,不予修改。成績鎖定后,次日系統會自動計算各年級、各班的學生的總績點(總績點由各門課程的學分與其績點進行加權平均后所得)。而教務員則可以通過該系統發布可以選修的課程。同時,教務員能夠查看到各年級,各班的學生的總績點排名。

4.領域驅動設計統一過程(DDDRUP)

雖然領域驅動設計劃分了戰略設計戰術設計,也提供了諸多模式和工具,但卻沒有一個統一過程去規范這兩個階段需要執行的活動、交付的工件以及階段里程碑,甚至沒有清晰定義這兩個階段如何銜接、它們之間執行的工作流到底是怎么樣的。

而《解構-領域驅動設計》提出的 DDDRUP 給出了更細致的步驟、步驟與步驟之間的銜接,以及明確的階段里程碑,最重要的是 DDDRUP 可以串聯 DDD 的所有概念和模式,非常便于初學者做知識梳理和上手實踐。下文我會依照 DDDRUP 的步驟流程進行講述,而非戰略設計+戰術設計的思路。(DDDRUP 各步驟與戰略&戰術設計的關系見下表)。

5.全局分析階段

全局分析階段對問題空間進行的梳理和分析,形成統一語言(ubiquitous language), 獲取問題空間的價值需求以及業務需求。

5.1 形成統一語言

統一語言:蘊含領域知識的、團隊內統一的領域術語。產品、領域專家以及開發人員掌握的領域知識存在差異,往往導致對同一個事物使用不同的術語。比如,商品的價格(Price)和商品的金額(Amount),它們本質是同一個東西,但是卻有不同的術語表示。

統一語言會參與 DDDRUP 的全流程,且會在精煉循環過程中不斷進行調整,以反映出更合適、更深層次的領域知識。

根據業務需求形成統一語言,有助于團隊對事物的認知達成一致。統一語言可以通過詞匯表的形式展示,其中詞匯表最好還要包含術語對應的英文描述,便于研發同學在代碼層面表達統一語言。示例-SMS 的統一語言詞匯表如下。

5.2 價值需求分析

價值需求分析主要做的三個工作是:

  • 識別利益相關者。利益相關者指的是與目標系統存在利益關系的人、團隊或組織, 可以簡單理解為目標系統的用戶,或與目標系統有直接交互的人、團隊或組織。

  • 明確系統愿景。闡明目標系統要做什么,以及為何要做。

  • 確定系統范圍。確定系統問題空間的邊界,明確系統什么該做,什么不該做。結合目標系統當前狀態未來狀態進行判斷。當前狀態指的是系統的可用資源,包括業務資源、人力資源,資金資源等;而未來的狀態則由業務目標、組織的戰略規劃和產品規劃共同構成。

  • 并非任何系統都 DDD,DDD 的核心是解決領域復雜性,若系統邏輯簡單,功能不多,引入 DDD 則會得不償失。而在進行價值需求分析后,我們便能判斷是否需要通過 DDD 驅動系統的設計。

    5.3 業務需求分析

    5.3.1 業務流程、業務場景、業務服務和業務規則

    使用業務流程、業務場景、業務服務業務規則來表示業務需求。

    業務流程:表示的是一個完整的、端對端的服務過程。

    業務場景:按階段性的業務目標劃分業務流程,就可以獲得業務場景。在示例-SMS 中,老師修改成績就分為了老師“提交申請單”,以及教務員“同意申請單”兩個場景。

    業務服務:角色主動向目標系統發起服務請求完成一次完整的功能交互,以實現業務目標。角色可以用戶、策略(定時任務)或者其他系統,完整則強調的是業務服務的執行序列的所有步驟都應該是連續且不可中斷的。業務服務是業務需求分析最核心,也是最基礎的單元,而業務流程和業務場景是為了更好地分析出業務服務。在示例-SMS 中的“同意申請單”場景中包含了兩個業務服務:教務員“同意申請單”和系統“郵件通知”教務員。

    業務規則:指對業務服務約束的描述,用于控制業務服務的對外行為。業務規則是業務服務正確性的基礎。常見的業務規則有:a) 意如“若… , 就….” 的需求描述,比如示例-SMS 中可提煉出“若成績錄入時間間隔超過一周,不予修改”;b) 具有事務性的操作。

    5.3.2 子領域

    通過業務流程、業務場景和業務服務的梳理,基本可以分析出業務需求所需要的業務服務。然而,業務服務粒度太細,而問題空間又太大,我們需要找一個更粗粒度的業務單元,來幫助我們對業務服務進行聚類,一方面可以降低管理過多細粒度業務服務導致的額外復雜度,另一方面可以幫助領域專家和開發團隊分析問題和設計方案時不至于陷入到業務細節中。而這個更粗粒度的業務單元就是子領域。

    子領域的作用

    • 劃分問題空間,作為業務服務分類的邊界;

    • 用于分辨問題空間的核心問題和次要問題。

    子領域的分類:

    • 核心子領域:能夠體現系統愿景,具有產品差異化和核心競爭力的業務服務;

    • 通用子領域:包含的內容缺乏領域個性,具有較強的通用性,例如權限管理和郵件管理;

    • 支撐子領域:包含的內容多為“定制開發”,其為核心子領域的功能提供了支撐。

    子領域的功能分類策略:問題空間應該分為哪些子領域,需要團隊對目標系統整體進行探索,并根據功能分類策略進行分解。

    • 業務職能:當目標系統運用于企業的生產和管理時,與目標系統業務有關的職能部門往往會影響目標系統的子領域劃分,并形成一種簡單的映射關系。這是康威定律的一種運用。

    • 業務產品:當目標系統為客戶提供諸多具有業務價值的產品時,可以按照產品的內容與方向進行子領域劃分。

    • 業務環節對貫穿目標系統的核心業務流程進行階段劃分,然后按照劃分出來的每個環節確定子領域。(這也是我們最常用的策略)

    • 業務概念:捕捉目標系統中一目了然的業務概念,將其作為子領域。

    劃分子領域的過程存在很多經驗因素,一個對該行業領域知識了如指掌的領域專家,可以在完成價值需求分析后,結合自身的領域經驗,能夠選擇合適的聚類策略并給出穩定的子領域列表。但,沒有領域經驗也沒有關系!因為根據知識消化循環思路,再經歷多個迭代后收斂出來的子領域劃分也會逐漸合理,逼急領域專家憑經驗得出的子領域劃分,只是可能需要的時間要長一些。

    6.架構映射階段

    在架構映射階段,我們需要識別限界上下文,并通過上下文映射表示限界上下文之間的協作關系。

    6.1 限界上下文的定義和特征

    6.1.1 限界上下文的定義

    限界上下文是語義和語境的邊界。在問題空間,統一語言形成了團隊對領域概念的統一表達,子領域形成了領域概念之間的邊界。而在解空間,限界上下文可以看做是統一語言+子領域的融合體,統一語言需要在限界上下文內才具有明確的業務含義。

    以電商購物場景為例。在進行商品下單后,系統會生成一個訂單;在用戶付款完成后,系統也會生成一個訂單;到了物流派送流程,系統還會生成一個訂單。雖然這三個步驟中的領域概念都叫訂單,但是他們的關注點/職責卻不同:商品訂單關注的是商品詳情,支付訂單關注的是支付金額和分潤情況,物流訂單關注的是收貨地址。也就是說,商品、支付和物流分別為三個限界上下文,而訂單作為統一語言需要在特定的限界上下文內,我們才能夠明確其關注點/負責的職責。

    6.1.2 限界上下文的特征

    最小完備:限界上下文在履行屬于自己的業務能力時,擁有的領域知識是完整的,無須針對自己的信息去求助別的限界上下文。

    自我履行:限界上下文能夠根據自己擁有的知識來完成業務能力。自我履行體現了限界上下文縱向切分業務能力的特征。

    這里需要強調一下業務模塊(橫向切分)限界上下文(縱向切分)的區別。業務模塊不具備完整、獨立的業務能力,它沒有按照同一個業務變化的方向進行。而限界上下文是對目標系統架構的縱向切分,切分的依據是從業務進行考慮的領域維度。為了提供完整的業務能力,在根據領域維度進行劃分時,還需要考慮支撐業務能力的基礎設施實現,如與該業務相關的數據訪問邏輯,以及將領域知識持久化的數據庫模型,形成縱向的邏輯邊界,即限界上下文邊界。

    穩定空間:限界上下文必須防止和減少外部變化帶來的影響。

    獨立進化:指減少限界上下文內部變化對外界產生的影響。

    上述的四個特征可以幫助我們驗證識別出來的限界上下文。限界上下文劃分是否合理、職責分配是否合理(最小完備 & 自我履行),是否合理運用上下文映射的手段隔離外部變化的影響(穩定空間)、是否有合理的封裝,對外提供的接口是否穩定(獨立進化)?

    6.2 限界上下文的識別

    6.2.1 按業務維度識別

    1. 歸類

    按照業務相關性對業務服務進行歸類,業務相關性體現為:

    • 語義相關性:存在相同或相似的領域概念,對應于業務服務描述的名詞,如果不同的業務服務操作了相同或相似的對象,即可認為它們存在語義相關性。

    • 功能相關性:體現領域行為的相關性,業務服務是否服務于同一個業務目標。

    2. 歸納

    歸納是對歸類后的限界上下文進行命名。給限界上下文命名的過程,實際上也是對歸類是否合理的再一次復查。限界上下文的命名同樣需要遵循單一職責原則,它只能代表唯一的最能體現其特征的領域概念。倘若歸類不合理,命名就會變得困難,這時候我們就需要反思(遵循知識消化循環)歸類是否合理,并重新設計歸類。

    3. 邊界梳理

    歸類和歸納之后,限界上下文的邊界基本已經確定,邊界梳理則是根據限界上下文特征(最小完備、自我履行、穩定空間和獨立進化)以及子領域進行微調(當然也不排除大調)。

    為什么需要根據子領域進行限界上下文邊界的調整?限界上下文和子領域的關系是什么?理想的限界上下文與子領域的關系是一一對應的。上文提到,子領域是領域專家根據領域經驗選擇合適的功能分類策略進行劃分,這個過程不會牽扯對業務服務的分析,體現的是領域專家對行業的洞見和深刻認識,可見獲取子領域是一個自頂向下的過程。而限界上下文則是對業務服務進行歸類、歸納、梳理和調整,最終形成一個個的邊界,這是一個自下而上的過程。理想情況下,兩者應該是雙向奔赴的,自頂向下得到的子領域和自下而上得到的限界上下文能夠完美契合!但是,現實哪有這么理想呢!所以一般情況下都需要我們進行調整,力求這兩者能夠一一對應。這里就再cue一下知識消化循環。優秀的領域專家劃分出來的子領域,往往能夠實現與限界上下文的一一對應。這就是經驗的力量!那經驗是怎么來的呢?我認為是領域專家經歷了無數個知識消化循環之后沉淀下來的。領域專家一開始也是小白,劃分出來的子領域在映射為限界上下文之后發現不同限界之間可能存在語義重疊,角色在不同限界上下文之中履行的職責可能很相似,于是他們通過知識消化循環,不斷調整限界上下文的邊界,然后又通過限界上下文調整子領域。慢慢地,穩定、可復用的子領域就被沉淀下來了。因此,識別限界上下文不是一個單向的過程,而是一個根據子領域調整限界上下文,然后又根據限界上下文調整子領域的循環的過程。
    6.2.2 驗證

    正交原則

    正交性:如果兩個或更多事物中的一個發生變化,不會影響其他事物,這些事物就是正交的。要破壞變化的傳遞性,就要保證每個限界上下文對外提供的業務服務不能出現雷同。

    奧卡姆剃刀原理

    “如無必要,勿增實體”。這是避免過度設計的良方,同樣也是我們識別限界上下文的原則。如果對識別出來的限界上下文的準確性依然心存疑慮,比較務實的做法是保證限界上下文具備一定的粗粒度。遵循該原則,意味著當我們沒有尋找到必須切分限界上下文的必要證據時,就不要增加新的限界上下文。

    6.3 上下文映射

    限界上下文封裝了分離的業務能力,上下文映射則建立了限界上下文之間的關系。上下文映射提供了各種模式(防腐層、開放主機服務、發布語言、共享內核、合作者、客戶方/供應方、分離方式、遵奉者、大泥球),本質是在控制變化在限界上下文之間傳遞所產生的影響。

    下文將提供服務的限界上下文稱為“上游”上下文(U 表示),消費服務的限界上下文稱為“下游”上下文(D 表示)。

    6.3.1 防腐層

    引入防腐層的目的是為了隔離耦合。防腐層往往位于下游,通過它隔離上游上下文發生的變化。

    6.3.2 開放主機服務

    開放主機服務定義公開服務的協議(亦稱為“服務契約”),包括通信方式、傳遞消息的格式(協議),讓限界上下文可以被當做一組服務訪問。開放主機服務也可以視為一種承諾,保證開放的服務不會輕易做出變化。

    對于進程內的開放主機服務,稱為本地服務(對應 DDD 中的應用服務)。

    對于進程間的開放主機服務,成為遠程服務。根據選擇的分布式通信技術的不同,又可以定義出類型不同的遠程服務:

    • 面向服務行為,比如基于 RPC,稱為提供者(Provider);

    • 面向服務資源,比如基于 REST,稱為資源(Resource);

    • 面向事件,比如基于消息中間件,稱為訂閱者(Subscriber);

    • 面向視圖模型,比如基于 MVC,稱為控制器(Controller);

    6.3.3 發布語言

    發布語言是一種公共語言,用于兩個限界上下文之間的模型轉換。防腐層和開放主機服務都是訪問領域模型時建立的一層包裝,前者針對發起調用的下游(通過基礎設施層體現),后者針對響應請求的上游(通過應用層+遠程服務),以避免上下游之間的通信集成將各自的領域模型引入進來,造成彼此之間的強耦合。因此,防腐層和開放主機服務操作的對象都不應該是各自的領域模型,這正是引入發布語言的原因。(對于熟悉云 API 的小伙伴就會發現,其實云 API 根據我們定義的接口生成對應的 Request 對象和 Response 對象,并集成在云 API 的 SDK 中,這些對象就是發布語言)。

    一般情況下,發布語言根據開放主機服務的服務契約進行定義。

    說到這里,我們驚訝地發現防腐層開放主機服務發布語言可以完美聯動!

    6.3.4 共享內核

    共享內核指將限界上下文中的領域模型直接暴露給其他限界上下文使用。注意,這會削弱了限界上下文邊界的控制力。上面我們講述的防腐層、開放主機服務以及發布語言無不傳達一種思想,限界上下文不能直接暴露自己的領域模型或直接訪問其他限界上下文的領域模型,一定要有隔離層!

    但是,在特定的場景下,共享內核不見得不是一種合理的方式。任何軟件設計決策都要考量成本與收益,只有收益高于成本,決策才是合理的。一般對于一些領域通用的值對象是相對穩定的,這些類型通常屬于通用子領域,會被系統中幾乎所有的限界上下文復用,那么這些領域模型就適合使用共享內核的方式。共享內核的收益不言而喻,而面臨的風險則是共享的領域模型可能產生的變化。

    6.3.5 合作者

    合作關系指的是協作的限界上下文由不同的團隊負責,且這些團隊之間具有要么一起成功,要么一起失敗的強耦合關系。合作者模式要求參與的團隊一起做計劃、一起提交代碼、一起開發和部署,采用持續集成的方式保證兩個限界上下文的集成度與一致性,避免因為其中一個團隊的修改影響集成點的失敗。

    6.3.6 客戶方/供應方

    當一個限界上下文單向地為另一個限界上下文提供服務時,它們對應的團隊就形成了客戶方/供應方模式。這是最為常見的團隊協作模式,客戶方作為下游團隊,供應方作為上游團隊,二者協作的主要內容包括:

    • 下游團隊對上游團隊提出的服務

    • 上游團隊提供的服務采用什么樣的協議與調用方式

    • 下游團隊針對上游服務的測試策略

    • 上游團隊給下游團隊承諾的交付日期

    • 當上游服務的協議或調用方式發生變更時,如何控制變更

    6.3.7 分離方式

    分離方式的團隊協作模式是指兩個限界上下文之間沒有一丁點關系。如果此時雙方使用到了相似/相同的領域模型,則可以通過拷貝的方式解決,保證限界上下文之間的物理隔離!

    6.3.8 遵奉者

    當上游的限界上下文處于強勢地位,且上游團隊響應不積極時,我們可以采用遵奉者模式。即下游嚴格遵從上游團隊的模型,以消除復雜的轉換邏輯。

    當下游團隊選擇“遵奉”于上游團隊設計的模型時,意味著:

    • 可以直接復用上游上下文的模型(好的);

    • 減少了兩個限界上下文之間模型的轉換成本(好的);

    • 使得下游限界上下文對上游產生了模型上的強依賴(壞的)。

    6.3.9 大泥球

    一定要避免制造大泥球!大泥球的特點:

    • 越來越多的聚合因為不合理的關聯和依賴導致交叉污染;

    • 對大泥球的維護牽一發而動全身;

    • 強調“個人英雄主義”,只有個別“超人”能夠理清邏輯。

    6.4 示例-SMS 的限界上下文及其映射

    示例-SMS 的限界上下文可劃分為:

    • 成績上下文

    • 課程上下文

    • 審批上下文

    • 權限上下文

    • 郵件上下文

    上下文映射圖如下所示。

    7.領域建模階段

    領域建模階段由領域分析建模,領域設計建模和領域實現建模組成。在正式講解建模活動前,先了解一下什么是模型驅動設計。

    7.1 模型驅動設計

    模型是一種知識形式,它對知識進行了選擇性的簡化和有意的結構化,從而解決信息超載的問題。模型便于人們理解信息的意義,并專注核心問題。

    建模過程一般由分析活動設計活動實現活動組成。每一次建模活動都是一次對知識的提煉和轉換,并產生相應的模型,即分析模型設計模型實現模型

    建模過程并非是分析、設計和實現單向的前后串行過程,而是相互影響,不斷切換和遞進的關系。模型驅動設計的建模過程是:分析中蘊含了設計,設計中夾帶了實現,甚至實現后還要回溯到設計和分析的一種迭代的、螺旋上升的演進過程。

    根據分解問題的視角不同,我們日常建立的模型可以大致分為以下三類:

    • 數據模型:將問題空間抽取出來的概念視為數據信息,在求解過程中關注數據實體的樣式和它們之間的關系,由此建立的模型就是數據模型。

    • 服務模型:將每個問題視為目標系統為客戶端提供的服務,在求解過程就會關注客戶端發起的請求以及服務返回的響應,由此建立的模型就是服務模型。

    • 領域模型:圍繞問題空間的業務需求,在求解過程中力求提煉出表達領域知識的邏輯概念,由此建立的模型就是領域模型。

    7.1.1 領域模型驅動設計

    一個優秀的領域模型應該具備以下的特征(我們也可以說具備這些特征的模型就是領域模型):

    • 運用統一語言來表達領域中的概念;

    • 蘊含業務活動和規則等領域知識;

    • 對領域知識進行適度的提煉和抽象;

    • 由一個迭代的演進過程建立;

    • 有助于產品、領域專家和開發同學進行交流。

    領域建模階段目的便是建立領域模型。領域模型由領域分析模型、領域設計模型以及領域實現模型共同組成,它們也分別是領域分析建模、領域設計建模和領域實現建模三個建模活動的產物。

    值得注意的是,領域模型并非由開發團隊單方面輸出的產物,而是由產品、領域專家和開發團隊共同協作的結果。領域專家通過領域模型能夠判斷系統所支持的領域能力,以及由此編排出來的上層業務能力;開發團隊通過領域模型能夠形成基本的代碼框架(包括架構分層,每層需要定義的接口,接口的命名等)。同理,領域模型的調整,也意味著領域知識或業務規則的變化,也預示著系統所支持的業務能力和代碼實現同樣需要作出改變。

    7.2 領域分析建模

    領域分析建模:在限界上下文內,以“領域”為中心,提煉業務服務中的領域概念,確定領域概念之間的關系,最終形成領域分析模型。領域分析模型描述了各個限界上下文中的領域概念,以及領域概念之間的關系。

    下面講述如何通過“快速建模法”來構建領域分析模型。

    7.2.1 名詞建模

    找到業務服務中的名詞,在統一語言指導下將其映射為領域概念。

    7.2.2 動詞建模

    識別動詞并不是為領域模型對象分配職責、定義方法,而是將識別出來的動詞當做一個領域行為,然后看它是否產生了影響管理、法律或財務的過程數據。若存在,則將這些過程數據作為領域概念放到領域分析模型中。注意,這里的過程數據是要求會對企業運營和管理產生影響的數據,比如示例-SMS 系統中老師提交修改申請,就會產生申請單這個過程數據,而請求流水記錄、任務執行記錄都不屬于過程數據。動詞建模通過分析領域行為是否產生過程數據來找到隱藏的領域概念,彌補了名詞建模的不足。

    特別地,對于會產生領域事件的動詞,一般可以抽象出一個已完成該動作的狀態。

    7.2.3 提取隱式概念

    除了“名詞”和“動詞”,概念中其他重要的類別也可以在模型中顯式地表現出來,主要包括:約束規格

    約束

    約束一般是對領域概念的限制,我們可以將約束條件提取到自己的方法中,并通過方法名顯式地表達約束的含義。比如示例-SMS 中關于 GPA 運算的約束。

    有些時候,約束條件無法用單獨一個方法來輕松表達,抑或約束條件中會使用到與對象職責無關的信息,那么我們就可以將其提取到一個顯式的對象中。

    規格(SPECIFICATION)

    很多時候業務規則并不適合作為實體或值對象的職責,而且規則的變化和組合也會掩蓋領域對象的含義。但是,將規則移出領域層則導致領域代碼無法表達模型。此時,我們可以定義規格謂詞形式的顯式值對象),它用于確定對象是否滿足指定的標準。規格將規則保留在領域層,由于規格是一個完備的對象,所以這種設計也能更加清晰地反映模型。

    規格一般有如下三種用法:

    • (驗證)驗證對象,檢查它是否能滿足某些標準,比如示例-SMS 中成績實體在修改分數時就需要通過規約判斷當前是否滿足修改的標準;

    • (選擇)從集合中選擇一個符合要求的對象,可以搭配資源庫使用

    • (根據要求來創建)指定在創建新對象時必須滿足某種要求。

    規格由“謂詞”概念演變而來,因此我們可以使用“AND”,“OR”和“NOT”等運算對規格進行組合和修改。比如在 SMS 中,教務員需要查詢流程完結的申請單,我們就可以通過“AND”組合不同的規格進行實現。

    7.2.4 歸納抽象

    對于有定語修飾的名詞,要注意分辨它們是類型的差異,還是值的差異。如配送地址和家庭地址,訂單狀態和商品狀態。如果是值的差異,類型相同,應歸并為一個領域概念(如,配送地址和家庭地址);而類型不同,則不能合并(如,訂單狀態和商品狀態)。

    特別地,當定語修飾的名詞中,定語表示的是不同的限界上下文,且名詞相同時(即名稱相同、含義不同的領域概念),我們應該盡可能調整命名,確保含義不同的領域概念的名稱不同,以避免不必要的歧義和溝通上的誤解。比如:商品的訂單和庫存的訂單在特定限界上下文內都可以命名為 order,但是如果把庫存的訂單改為庫存的配送單 delivery 效果會更好。

    7.2.5 確認關系

    根據業務需求和領域知識,判斷領域概念之間是否存在關聯。且對于 1:N, N:1, M:N 的關聯關系,我們需要判斷是否可以為這些關聯關系定義一個新的類型,比如作品與讀者存在 1:N 的關系,我們可以定義“訂閱”這個概念來描述這種關系。

    注意,我們需要盡量避免對象中的雙向關系,即對象 A 關聯對象 B,而對象 B 關聯對象 A。當兩個對象存在雙向關系時,會為管理他們的生命周期帶來額外的復雜度。我們應該規定一個遍歷方向,來表明一個方向的關聯比另一個方向的關聯更有意義且更重要,比如示例 SMS 中,成績會關聯課程(成績實例中包含課程 ID),而課程不會關聯成績。當然,當雙向關系是領域的一個概念時,我們還是應該保留它。

    7.2.6 示例-SMS 的領域分析模型

    通過名詞建模,動詞建模和歸納抽象后,可提煉出以下領域對象:成績(Result)、績點(gpa)、總成績(total result)、總績點(total gpa)、學年(school year)、學期(semester)、課程(course)、學分(credit)、申請單(application receipt),郵件(mail),排名(rank),申請單狀態(application receipt status)

    這些領域對象之間的關系如下圖所示。

    7.3 領域設計建模

    領域設計建模的核心工作就是設計聚合設計服務,在這之前我們需要先了解一下設計要素(實體、值對象、聚合、工廠、資源庫、領域服務、領域事件)。

    7.3.1 設計要素

    領域驅動設計強調以“領域”為核心驅動力。設計領域模型時應該盡量避免陷入到技術實現的細節約束中。但很多時候我們又不得不去思考一些非領域相關的問題:

    • 領域模型對象在身份上是否存在明確的差別?

    • 領域模型對象的加載以及對象間的關系如何處理?

    • 領域模型對象如何實現數據的持久化?

    • 領域模型對象彼此之間如何做到弱依賴地完成狀態的變更通知?

    為了解答上述的四個問題,DDD 提供了很多的設計要素,它們能夠幫助我們在不陷入到具體技術細節的情況下進行領域模型的設計。

    7.3.1.1 實體

    實體的核心三要素:身份標識、屬性領域行為。

    身份標識:身份標識的主要目的是管理實體的生命周期。身份標識可分為:通用類型和領域類型。通用類型 ID 沒有業務含義;而領域類型 ID 則組裝了業務邏輯,建議使用值對象作為領域類型 ID。

    屬性:實體的屬性用來說明主體的靜態特征,并持有數據與狀態。屬性分為:原子屬性和組合屬性。組合屬性可以是實體,也可以是值對象,取決于該屬性是否需要身份標識。我們應該盡可能將實體的屬性定義為組合屬性,以便于在實體內部形成各自的抽象層次。

    領域行為:體現了實體的動態特征。實體具有的領域行為一般可以分為:

    • 變更狀態的領域行為:變更狀態的領域行為體現的是實體/值對象內部的狀態轉移,對應的方法入參為期望變更的狀態。(有入參,無出參);

    • 自給自足的領域行為:自給自足意味著實體對象只操作了自己的屬性,不外求于別的對象。(無入參);

    • 互為協作的領域行為:需要調用者提供必要的信息。(有入參,有出參);

    • 創建行為:代表了對象在內存的從無到有。創建行為由構造函數履行,但對于創建行為較為復雜或需要表達領域語義時,我們可以在實體中定義簡單工廠方法,或使用專門的工廠類進行創建。(有出參,且出參為特定實體實例)。

    7.3.1.2 值對象

    一個領域概念到底該用值對象還是實體類型,判斷依據:

    • 業務的參與者對它的相等判斷是依據值還是依據身份標識;

    • 確定對象的屬性值是否會發生變化,如果變化了,究竟是產生一個完全不同的對象,還是維持相同的身份標識;

    • 生命周期的管理。值對象無需進行生命周期管理。

    值對象具有不變性。值對象完成創建后,其屬性和狀態就不應該再進行變更了,如果需要更新值對象,則通過創建新的值對象進行替換。

    由于值對象的屬性是在其創建的時候就完成傳入的,那么值對象所具有的領域行為大部分情況下都是“自給自足的領域行為”,即入參為空。這些領域行為一般提供以下的能力。

    • 自我驗證:驗證傳入值對象的外部數據是否正確,一般在創建該值對象時進行驗證。

    • 自我組合:當值對象涉及到數值運算時,可以定義相同類型值對象的方法,使值對象具有自我組合能力。比如示例-SMS 中,在統計成績時會涉及學分相加的運算,因此我們可以將相加運算定義為可組合的方法,便于調用者使用。

    • 自我運算:根據業務規則對屬性值進行運算的行為。

    在進行領域設計建模時,要善于運用值對象而非內建類型去表達細粒度的領域概念。相比于內建類型,值對象的優勢有:

    • 值對象在類型層面就可以表達領域概念,而不僅僅依賴命名;

    • 值對象可以封裝領域行為,進行自我驗證,自我組合,自我運算。

    7.3.1.3 聚合

    聚合的基本特征:

    • 聚合是包含了實體和值對象的一個邊界。

    • 聚合內包含的實體和值對象形成一棵樹,只有實體才能作為這棵樹的根。

    • 外部對象只允許持有聚合根的引用,以起到邊界控制作用。

    • 聚合作為一個完整的領域概念整體,其內部會維護這個領域概念的完整性。

    • 由聚合根統一對外提供履行該領域概念職責的行為方法,實現內部各個對象之間的行為協作。

    7.3.1.4 工廠

    聚合中的工廠:一個類或方法只要封裝了聚合對象的創建邏輯,都可以認為是工廠。表現形式如下:

    • 引入專門的聚合工廠(尤其適合需要通過訪問外部資源來完成創建的復雜創建邏輯)

    • 聚合自身擔任工廠(簡單工廠模式)

    • 服務契約對象或裝配器(assembler)擔任工廠(負責將外部請求對象 DTO 轉換為實體)

    • 使用構建者組裝聚合

    注意!這里工廠創建的基本單元是聚合,而非實體,注意與實體中的創建行為區分。

    7.3.1.5 資源庫

    資源庫是對數據訪問的一種業務抽象,用于解耦領域層與外部環境,使領域層變得更為純粹。資源庫可以代表任何可以獲取資源的倉庫,例如網絡或其他硬件環境,而不局限于數據庫。

    一個聚合對應一個資源庫。領域驅動設計引入資源庫,主要目的是管理聚合的生命周期。資源庫負責聚合記錄的查詢與狀態變更,即“增刪改查”操作。資源庫分離了聚合的領域行為和持久化行為,保證了領域模型對象的業務純粹性。

    值得注意的是,資源庫的操作單元是聚合。當我們定義資源庫的接口時,接口的入參應該為聚合的根實體。如果要訪問聚合內的非根實體,也只能通過資源庫獲得整個聚合后,將根實體作為入口,在內存中訪問封裝在聚合邊界內的非根實體對象。

    資源庫與數據訪問對象(DAO)的區別:根本區別在于,數據訪問對象在訪問數據時,并無聚合的概念,也就是沒有定義聚合的邊界約束領域模型對象,使得數據訪問對象的操作粒度可以針對領域層的任何模型對象。數據訪問對象(DAO)可以自由地操作實體和值對象。沒有聚合邊界控制的數據訪問,會在不經意間破壞領域概念的完整性,突破聚合不變量的約束,也無法保證聚合對象的獨立訪問與內部數據的一致性。其次,資源庫是基于領域模型對存儲系統進行的抽象,因此資源庫中的方法命名可以表達領域概念;而數據訪問對象(DAO)是存儲系統對外暴露的抽象,其方法命名更貼合數據庫本身的操作。

    **7.3.1.6 領域服務 **

    聚合通過聚合根的領域行為對外提供服務,而領域服務則是對聚合根的領域行為的補充。因此,我們應該盡量優先通過聚合根的領域行為來滿足業務服務。

    那什么場景下我們會需要用到領域服務呢?有如下兩個:

    • 生命周期管理。為了避免領域知識的泄露,應用服務不會直接引用聚合生命周期相關的服務(工廠、資源庫接口),而聚合根實體一般不會依賴資源庫接口,此時就需要領域服務進行組合對外暴露。

    • 依賴外部資源。為了保證聚合的穩定性,聚合根實體不會依賴防腐層接口。因此,當聚合對外暴露的服務需要設計外部資源訪問時,就需要通過領域服務來完成。

    7.3.1.7 領域事件

    領域事件屬于領域層的領域模型對象,由限界上下文中的聚合發布,感興趣的聚合(同一限界上下文/不同限界上下文)可以進行消費。而當一個事件由應用層發布,則該事件為應用事件。

    引入領域事件首要目的是更好地跟蹤實體狀態的變更,并在狀態變更時,通過事件消息的通知完成領域模型對象之間的協作。

    領域事件的特征

    • 領域事件代表了領域的概念;

    • 領域事件是已經發生的事實(表示事件的名稱應該是過去時,比如 Committed);

    • 領域事件是不可變的領域對象;

    • 領域事件會基于某個條件而觸發。

    領域事件的用途

    • 發布狀態變更;

    • 發布業務流程中的階段性成果;

    • 異步通信。

    領域事件應該包含:

    • 身份標識,即事件 ID,為通用類型的身份標識;

    • 事件發生的時間戳,便于記錄和跟蹤;

    • 屬性需要針對訂閱者的需求,在增強事件反向查詢之間進行權衡。增強事件指屬性中包含訂閱者所需的所有數據;反向查詢則是屬性包含事件 ID,當訂閱者需要數據時通過事件 ID 進行反向查詢。

    7.3.2 設計聚合

    在領域設計模型中,聚合是最小的設計單元。

    7.3.2.1 設計的經驗法則

    這里有四條經驗法則:

  • 在聚合邊界內保護業務規則不變性。

  • 聚合要設計得小巧。

  • 通過身份標識符關聯關系其他聚合。

  • 使用最終一致性更新其他聚合。

  • 下面展開講述法則 1 和法則 3。

    法則 1 在聚合邊界內保護業務規則不變性。

    法則 1 包含了兩個關鍵點:a) 參與維護業務規則不變性的領域概念應該置于同一個聚合內;b) 在任何情況下都要保護業務規則不變性。比如,在 sms 系統中分數和績點具有轉換關系,這是業務規則的不變性,因此這兩個概念被放在了同一個聚合邊界內;當出現老師修改分數的場景時,需要保證績點的換算同時被執行。由于這里績點對象是值對象,不需要關心其生命周期管理的問題。當業務規則涉及到多個實體時,就需要通過本地事務來保證規則不變性(即實體間基于業務規則的數據一致性)。

    法則 3 通過身份標識符關聯其他聚合。

    注意這里強調了關聯關系,關聯關系會涉及聚合 A 對聚合 B 的生命周期管理的問題,對于這種聚合間的關聯關系,我們通過身份標識建立關聯。而當聚合 A 引用聚合 B,但不需要對聚合 B 進行生命周期管理時,我們認為這是一種依賴關系(比如方法中的入參,而非類中的屬性),對于聚合間的依賴關系,我們可以通過對象引用(聚合根實體的引用)的方式建立依賴。(PS:假設設計之初難以判斷聚合之間到底是關聯關系,還是依賴關系,我們就統一使用身份標識符作為關系引用即可)

    聚合間的依賴關系通常分為兩種方式

    • 職責的委派:一個聚合作為另一個聚合的方法參數, 就會形成職責的委派。

    • 聚合的創建:一個聚合創建另外一個聚合,就會形成實例化的依賴關系。

    7.3.2.2 設計步驟

    1. 理順對象圖

    分析對象是實體還是值對象。

    2. 分解關系薄弱處

    聚合本質是一個高內聚的邊界,因此我們可以根據領域對象之間關系的強弱來定義出聚合的邊界。對象間的關系由強到弱可以分為:泛化關系,關聯關系和依賴關系。其中關聯關系和依賴關系在 7.3.2.1 小節已講述,而泛化關系可以理解為是繼承關系(即父子關系)。

    泛化關系

    雖然泛化關系是強耦合關系,但是根據對業務理解的視角不同,會產生不同的設計:

    • 整體視角:調用者并不關心特化的子類之間的差異,而是將整個繼承體系視為一個整體。此時應以泛化的父類作為聚合根。

    • 獨立視角:調用這只關注具體的特化子類,體現了概念的獨立性,此時應以特化的子類作為獨立的聚合根。

    關聯關系

    上述提到過,聚合間的關聯關系會涉及聚合 A 對聚合 B 的生命周期管理,這其實是一個比較寬松的約束。那聚合內實體的關聯關系應該是怎么樣的呢?生命周期一致的、共存亡的,當主實體被銷毀時,從實體也隨之會被銷毀。比如商品實體和商品明細實體。而在示例-SMS 中,成績和總成績會被定義為兩個聚合,原因是總成績在成績鎖定后被統計,隨后將不再發生改變,可見兩者不存在上述的共存亡的關聯關系。

    PS: 實際上根據關聯關系來區分邊界的方法同樣適用于限界上下文的邊界劃分。比如示例-SMS 中的課程和成績生命周期不同,先有課程,后有成績;而且成績鎖定后,課程被撤銷也不會對成績有影響,因此就可以定義出課程上下文和成績上下問。

    依賴關系

    依賴關系主要體現的是實體間的職責委派和創建行為,可以分到不同的聚合邊界。

    3. 調整聚合邊界

    根據業務規則調整聚合邊界。為了維護業務規則的不變性,相關的實體應該至于同一個聚合邊界內。

    7.3.3 設計服務

    這里的服務是對應用服務、領域服務領域行為(實體提供的方法)和端口(資源庫接口、防腐層接口)的統稱。

    7.3.3.1 分解任務

    業務服務包含若干個組合服務,組合服務包含若干個原子服務領域行為端口都可以認為是原子服務。

    7.3.3.2 分配職責

    應用服務:匹配業務服務,提供滿足業務需求的服務接口。應用服務自身并不包含任何領域邏輯,僅負責協調領域模型對象,通過它們的領域能力組合完整一個完整的應用目標。

    領域服務:匹配組合服務,執行業務功能,若原子任務為無狀態行為或獨立變化的行為,也可以匹配領域服務??刂贫鄠€聚合與端口之間的協作,由它來承擔組合任務的執行。

    領域行為:匹配原子服務,提供業務功能的業務實現。強調無狀態和獨立變化,由實體提供。

    端口:匹配原子服務,抽象對外資源的訪問,主要的端口包括資源庫接口和防腐層接口。

    雖然上述給出了應用服務、領域服務、領域行為和端口與業務服務、組合服務和原子服務的匹配關系,但是對于應用服務、領域服務、領域行為和端口之間的關聯關系卻還不清晰,這里結合書中內容和個人實踐給出一個參考。應用服務:核心職責是編排聚合間的領域服務。 - 領域服務 - 防腐層接口:當多聚合間領域服務進行協作后需要訪問外部資源,此時相關的防腐層邏輯應該至于應用層。(防腐層是上下文映射的方式,并非領域模型特有) - 工廠:特指服務契約對象或裝配器擔任工廠,即將DTO轉換為實體的工廠。 - 領域行為:在上述工廠創建實體后,若只需要調用實體的領域行為,而不需要涉及生命周期管理,可直接在應用服務中進行調用。領域服務:細粒度的領域對象可能會把領域層的知識泄露到應用層中。這產生的結果是應用層不得不處理復雜的、細致的交互,從而使得領域知識蔓延到應用層或用戶界面代碼當中,而領域層會丟失這些知識。明智地引入領域層服務有助于在應用層和領域層之間保持一條明確的界限,因此應用層多數情況下也不會直接引用聚合的領域行為。 - 工廠 - 領域行為 - 防腐層接口:聚合內需要依賴外部資源,則將防腐邏輯收攏在領域服務中。 - 資源庫接口領域行為:不要關聯資源庫和防腐層接口。
    7.3.4 示例-SMS 的領域設計模型

    聚合設計

    服務設計

    下面只羅列非查詢類的服務設計。

    7.4 領域實現建模

    領域實現建模關注的并非是如何進行代碼實現,而是如何驗證代碼實現的正確性,保證實現的高質量

    7.4.1 領域模型與測試金字塔

    領域模型中的服務包括了應用服務、領域服務、領域行為端口。其中通過 Provider(面向服務行為)、Resource(面向服務資源)、Subscriber(面向事件)、Controller(面向視圖模型)對外進行暴露的,我們稱為遠程服務

    領域模型中的服務與測試金字塔的關系如下圖所示。

    7.4.2 測試驅動開發

    領域實現建模提倡的是測試驅動開發的編程思想,即要求開發者在進行邏輯實現前,優先進行測試用例的編寫,站在調用者角度而非實現者角度去思考接口。

    在上述測試金字塔中,開發者需要關注的是單元測試(不依賴任何外部資源的測試就是單元測試)。在領域設計建模階段,我們對業務服務/應用服務進行分解,定義出了領域行為和領域服務。對于領域行為,由于其不依賴外部資源,因此我們可以直接編寫單元測試;而對于領域服務,其可能會通過端口訪問外部資源,此時我們需要對端口進行 mock,以隔離外部資源對領域邏輯驗證的干擾。特別地,單元測試一定要覆蓋所有對業務規則的驗證,這是保證領域行為和領域服務正確性的基礎。

    單元測試編碼規范:

    • 測試類的命名應與被測試類保持一致,為“被測類名稱+Test 后綴”。

    • 測試方法表達業務或業務規則為目的。

    • 測試方法體遵循 Given-When-Then 模式。Given: 為要測試的方法提供準備,包括創建被測試對象,為調用方法準備輸入參數實參等;When: 調用被測試的方法,遵循單一職責原則,在一個測試方法的 When 部分,應該只有一條語句對被測方法進行調用;Then: 對被測方法調用后的結果進行預期驗證。

    8.分層架構與代碼骨架

    8.1 分層架構

    代碼架構分層是經典 DDD 四層:用戶接口層應用層領域層基礎設施層。

    需要注意的的地方是:

    • 用戶接口層根據通信方式的不同,區分開了 Provider(面向服務行為)、Subscriber(面向事件)、Controller(面向視圖模型&資源) 、Task(面向策略/定時任務)。

    • 基礎設施層單獨劃分了 infranstructure-impl 模塊。為了保證領域層的純潔性,DDD 通過依賴倒置把訪問外部系統(數據庫,第三方系統)的服務的實現都下放到了基礎設施層,而 infranstructure-impl 模塊 則是對這些實現進行了歸集。這樣做的好處有兩個:第一,依賴關系明確,(infransturcture-impl —> domain,application), (interface、application、domain —> infranstructure);第二,拆分服務更便捷。當我們需要部分領域獨立拆分出來的時候,在實現層面就只需要關注 infransturcture-impl 模塊 即可。

    • Infranstructure-impl 模塊依賴應用層的原因是應用層可能會抽象出防腐層接口,需要 infranstruct-impl 為其提供實現。

    8.2 代碼骨架

    8.2.1 用戶接口層

    用戶接口層的核心職能:協議轉換和適配、鑒權、參數校驗和異常處理。

    ├── controller //面向視圖模型&資源 │ ├── ResultController.java │ ├── assembler // 裝配器,將VO轉換為DTO │ │ └── ResultAssembler.java │ └── vo // VO(View Object)對象 │ ├── EnterResultRequest.java │ └── ResponseVO.java ├── provider // 面向服務行為 ├── subscriber // 面向事件 └── task // 面向策略└── TotalResultTask.java
    8.2.2 應用層

    應用層的核心職能:編排領域服務、事務管理、發布應用事件。

    ├── assembler // 裝配器,將DTO轉換為DO │ ├── ResultAssembler.java │ └── TotalResultAssembler.java ├── dto // DTO(Data Transfer Object)對象 │ ├── cmd // 命令相關的DTO對象 │ │ ├── ComputeTotalResultCmd.java │ │ ├── EnterResultCmd.java │ │ └── ModifyResultCmd.java │ ├── event // 應用事件相關的DTO對象, subscriber負責接收 │ └── qry // 查詢相關的DTO對象 └── service // 應用服務├── ResultApplicationService.java├── event // 應用事件,用于發布└── adapter // 防腐層適配器接口
    8.2.3 領域層

    代碼組織以聚合為基本單元。

    ├── result // 成績聚合 │ ├── entity // 成績聚合內的實體 │ │ └── Result.java │ ├── service // 領域服務 │ │ ├── ResultDomainService.java │ │ ├── event // 領域事件 │ │ ├── adapter // 防腐層適配器接口 │ │ ├── factory // 工廠 │ │ └── repository // 資源庫 │ │ └── ResultRepository.java │ └── valueobject // 成績聚合的值對象 │ ├── GPA.java │ ├── ResultUK.java │ ├── SchoolYear.java │ └── Semester.java └── totalresult // 總成績聚合├── ... 這段有點長,其代碼結構與成績聚合一致,因此省略 ...
    8.2.4 基礎設施實現層

    該層主要提供領域層接口(資源庫、防腐層接口)和應用層接口(防腐層接口)的實現。

    代碼組織基本以聚合為基本單元。對于應用層的防腐層接口,則直接以 application 作為包名組織。

    ├── application // 應用層相關實現 │ └── adapter // 防腐層適配器接口實現 │ ├── facade // 外觀接口 │ └── translator // 轉換器,DO -> DTO ├── result // 成績聚合相關實現 │ ├── adapter │ │ ├── facade │ │ └── translator │ └── repository // 成績聚合資源庫接口實現 │ └── ResultRepositoryImpl.java └── totalresult // 總成績聚合相關實現├── adapter│ ├── CourseAdapterImpl.java│ ├── facade│ └── translator└── repository└── TotalResultRepositoryImpl.java

    9.雜談

    9.1 DDD 與微服務

    微服務拆解指的是把一個單體服務拆分為粒度“足夠小”的多個服務,而這里的“足夠小”是一個主觀的,沒有任何標準的定義。盡管如此,我們對“”這個詞還是有一些基本要求的:足夠內聚,足夠獨立,足夠完備,這才使得拆分出來的微服務收益大于投入,試想如果一個微服務提供的業務功能會牽扯到與其他眾多微服務的協作,那豈不是芭比 Q 了。

    而上述我們對微服務的基本要求,實際上與限界上下文的特征(最小完備,自我履行,穩定空間,獨立進化)不謀而合,因此,我們可以把限界上下文映射為微服務。我在日常實踐中,都是將限界上下文和微服務的關系進行一一對應的,但這不是絕對的!限界上下文是站在領域角度給出的邏輯邊界,而微服務的設計往往還要考慮物理邊界,以及實際的質量需求(性能,可用性,安全性等),比如當我們采用的是 CQRS 架構,領域模型會被分為命令模型和查詢模型,雖然它們同屬一個限界上下文,但是它們往往是物理隔離的。因此,限界上下文只能作為微服務拆分的指導,而拆分過程中需要考慮質量需求,架構設計等技術因素。

    9.2 事務

    9.2.1 本地事務

    上文在提及限界上下文識別和聚合設計的時候其實都提到需要考慮事務屬性,即需要通過本地事務來保證業務規則的不變性/一致性。這里我們會疑惑的是:誰來承擔管理事務的職責?事務管理的邊界是什么?

    應用層承擔管理事務的職責

    事務本質是一種技術手段,而領域模型本身與技術無關,因此事務應該由應用層負責管理。

    事務管理的邊界是聚合,有時限界上下文也可以

    資源庫操作的基本單元是聚合,因此事務管理的邊界是聚合便是自然而然得出的結論。這里需要考慮的是當需要保證事務屬性的不僅僅只有資源庫操作,還包括發布領域事件時(即保證聚合落庫和事件發布的原子性),我們可能需要采用可靠事件模式,即通過把領域事件落庫事件表來表示事件的發布。此時應用層在管理事務時就沒什么心智負擔了。當然,采用可靠事件模式實際是限制了領域模型的實現,也算是技術對領域模型的一種入侵吧,但相比于解放應用層而言,應該是利大于弊。

    我們也知道,應用層的核心職責是負責編排和協調不同聚合的領域服務,而應用層又負責事務管理,自然我們能推到出事務管理的邊界是多個聚合(即限界上下文)。但這里有兩個關注點:

    a)一般是出于質量需求(性能會好一些,時效性更高一些);

    b)同一個限界上下文內的多個聚合共享一個 DB。

    9.2.2 Saga 事務

    為了避免耦合,DDD 主張通過柔性事務來保證跨聚合、跨限界上下文的最終一致性。而目前業界比較主流的應用是 Saga 模式:通過使用異步消息來協調一系列本地事務,從而維度多個服務之間的數據一致性。而另一個非常著名的柔性事務方案 TCC 為啥沒有 Saga 契合呢?

    TCC 共分為三個階段:

  • Try 階段:準備階段,對資源進行鎖定或預留;

  • Confirm 階段:提交階段,執行實際的操作;

  • Cancel 階段:補償階段,任意執行的操作出錯了,就需要執行補償,即釋放 Try 階段預留的資源。

  • 可以看到 TCC 實際對領域模型的侵入是比較大的:

    a)TCC 要求領域模型設計時,定義相關的屬性以支持資源鎖定/預留的問題;

    b)TCC 對服務接口定義做出了要求,領域模型需要提供 Try,Confirm 和 Cancel 相應的領域服務。

    Saga 模式并不要求其對資源進行鎖定/預留,而其補償操作也是通過執行操作的逆操作來完成(比如支付的逆操作是退款)。而大部分情況下,完整的領域模型都會對外提供操作及其逆操作。

    10. 參考

  • 《解耦-領域驅動設計》

  • 《領域驅動設計:軟件核心復雜性應對之道》

  • 《實現領域驅動設計》

  • 《微服務架構設計模式》

  • 極客時間《DDD 實戰課》

  • 極客時間《如何落地業務建模》

  • 《領域驅動設計精粹》

  • 最近其他好文:

    深入揭秘 epoll 是如何實現 IO 多路復用的

    低代碼是什么?有什么優勢

    Go 高性能編程技法

    總結

    以上是生活随笔為你收集整理的万字长文助你上手软件领域驱动设计 DDD的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    在线а√天堂中文官网 | 一区二区三区高清视频一 | 99久久婷婷国产综合精品青草免费 | 狠狠色丁香久久婷婷综合五月 | 国产激情无码一区二区app | 久久综合给合久久狠狠狠97色 | 撕开奶罩揉吮奶头视频 | 夜夜夜高潮夜夜爽夜夜爰爰 | 少妇久久久久久人妻无码 | 无码纯肉视频在线观看 | 国产精品亚洲一区二区三区喷水 | 欧美老人巨大xxxx做受 | 欧美老妇交乱视频在线观看 | 漂亮人妻洗澡被公强 日日躁 | 中国女人内谢69xxxxxa片 | 5858s亚洲色大成网站www | av人摸人人人澡人人超碰下载 | 色综合天天综合狠狠爱 | 久久久中文字幕日本无吗 | 久久zyz资源站无码中文动漫 | 极品嫩模高潮叫床 | 日韩精品无码免费一区二区三区 | 精品久久8x国产免费观看 | 丁香啪啪综合成人亚洲 | 欧美乱妇无乱码大黄a片 | 国产激情无码一区二区app | 少妇性l交大片欧洲热妇乱xxx | 人妻无码久久精品人妻 | 熟女体下毛毛黑森林 | 无码av免费一区二区三区试看 | 伊人久久婷婷五月综合97色 | www国产亚洲精品久久久日本 | 久久婷婷五月综合色国产香蕉 | 水蜜桃亚洲一二三四在线 | 在线观看免费人成视频 | 欧美高清在线精品一区 | 日韩少妇白浆无码系列 | 国产亚洲视频中文字幕97精品 | 亚洲国产欧美国产综合一区 | 在线精品亚洲一区二区 | 国产乱人伦av在线无码 | 丰满护士巨好爽好大乳 | 伦伦影院午夜理论片 | 久久久久人妻一区精品色欧美 | 国产精品人妻一区二区三区四 | 日韩av无码一区二区三区 | 日本欧美一区二区三区乱码 | 国产精品国产三级国产专播 | 亚洲熟女一区二区三区 | 国产精品亚洲а∨无码播放麻豆 | 99久久婷婷国产综合精品青草免费 | 波多野结衣aⅴ在线 | 亚洲七七久久桃花影院 | 人妻互换免费中文字幕 | 国精产品一区二区三区 | 国产精华av午夜在线观看 | 日本熟妇人妻xxxxx人hd | 免费国产成人高清在线观看网站 | 无码精品国产va在线观看dvd | 在线观看国产午夜福利片 | 无码播放一区二区三区 | 无码国产乱人伦偷精品视频 | www成人国产高清内射 | 一本久久伊人热热精品中文字幕 | 国产片av国语在线观看 | 波多野结衣 黑人 | 十八禁真人啪啪免费网站 | 天干天干啦夜天干天2017 | 欧美熟妇另类久久久久久多毛 | 奇米影视7777久久精品人人爽 | 欧美成人家庭影院 | 人妻尝试又大又粗久久 | 午夜精品久久久内射近拍高清 | 欧美xxxx黑人又粗又长 | av小次郎收藏 | 无码人妻丰满熟妇区毛片18 | 国产美女精品一区二区三区 | 欧美色就是色 | 俺去俺来也www色官网 | 亚洲爆乳无码专区 | 亚洲国产精品成人久久蜜臀 | a国产一区二区免费入口 | 久久久久久久女国产乱让韩 | 波多野结衣一区二区三区av免费 | 精品乱码久久久久久久 | 装睡被陌生人摸出水好爽 | 97无码免费人妻超级碰碰夜夜 | 亚洲精品www久久久 | a在线亚洲男人的天堂 | 久久精品国产99久久6动漫 | 欧美日韩一区二区综合 | 无套内谢的新婚少妇国语播放 | 日韩欧美群交p片內射中文 | 午夜成人1000部免费视频 | 无码人妻少妇伦在线电影 | 极品尤物被啪到呻吟喷水 | 中文毛片无遮挡高清免费 | 亚洲色欲色欲天天天www | 久久国产36精品色熟妇 | 亚洲区小说区激情区图片区 | 久久无码专区国产精品s | 国产黑色丝袜在线播放 | 夫妻免费无码v看片 | 熟女少妇人妻中文字幕 | 无码任你躁久久久久久久 | 性色欲情网站iwww九文堂 | 丰满人妻一区二区三区免费视频 | 九九综合va免费看 | 少妇的肉体aa片免费 | 无码成人精品区在线观看 | 98国产精品综合一区二区三区 | 熟妇人妻激情偷爽文 | 色五月五月丁香亚洲综合网 | 久久午夜无码鲁丝片午夜精品 | а√天堂www在线天堂小说 | 俺去俺来也www色官网 | 久久久精品456亚洲影院 | 日本护士xxxxhd少妇 | 亚洲日韩av一区二区三区四区 | 亚洲精品国产精品乱码视色 | 久久99久久99精品中文字幕 | 国产精品人妻一区二区三区四 | а√资源新版在线天堂 | 欧美大屁股xxxxhd黑色 | 伊人久久大香线焦av综合影院 | 成年美女黄网站色大免费视频 | 午夜无码区在线观看 | 日本xxxx色视频在线观看免费 | 中文字幕人成乱码熟女app | 亚洲娇小与黑人巨大交 | av香港经典三级级 在线 | 99视频精品全部免费免费观看 | 国产香蕉尹人综合在线观看 | 最近中文2019字幕第二页 | 婷婷五月综合缴情在线视频 | 国产日产欧产精品精品app | 又粗又大又硬毛片免费看 | 中文无码精品a∨在线观看不卡 | 国产精品无码永久免费888 | 国产麻豆精品一区二区三区v视界 | 动漫av网站免费观看 | 久久亚洲日韩精品一区二区三区 | 亚洲爆乳精品无码一区二区三区 | 国产成人综合在线女婷五月99播放 | 亚洲色偷偷偷综合网 | 男人的天堂2018无码 | 2020久久香蕉国产线看观看 | 国产精品无套呻吟在线 | 呦交小u女精品视频 | 国产精品永久免费视频 | 国语自产偷拍精品视频偷 | 欧美性生交xxxxx久久久 | 东北女人啪啪对白 | 性色欲情网站iwww九文堂 | 欧美真人作爱免费视频 | 久久97精品久久久久久久不卡 | 精品一二三区久久aaa片 | 亚洲成a人片在线观看无码3d | 国产精品高潮呻吟av久久4虎 | 亚洲成av人在线观看网址 | 对白脏话肉麻粗话av | 久久亚洲国产成人精品性色 | 熟妇人妻无乱码中文字幕 | 亚洲精品成人福利网站 | 精品国精品国产自在久国产87 | 人人妻人人澡人人爽人人精品 | 人人澡人摸人人添 | 亚洲一区二区三区 | 亚洲aⅴ无码成人网站国产app | 亚洲の无码国产の无码影院 | 亚洲一区二区三区偷拍女厕 | 国产精品久久久久9999小说 | 欧美人与动性行为视频 | 国产香蕉97碰碰久久人人 | v一区无码内射国产 | 综合激情五月综合激情五月激情1 | 又色又爽又黄的美女裸体网站 | 亚洲 另类 在线 欧美 制服 | 中文字幕无线码免费人妻 | 国产精品igao视频网 | √天堂中文官网8在线 | 久久综合九色综合97网 | 99久久人妻精品免费一区 | 国产黑色丝袜在线播放 | 成人无码视频免费播放 | 丰满人妻一区二区三区免费视频 | 窝窝午夜理论片影院 | 中文亚洲成a人片在线观看 | 久久99热只有频精品8 | 国产精品理论片在线观看 | 欧美日韩一区二区三区自拍 | 亚洲欧美国产精品专区久久 | 在线a亚洲视频播放在线观看 | 对白脏话肉麻粗话av | 国产午夜无码精品免费看 | 亚洲色偷偷男人的天堂 | 男人扒开女人内裤强吻桶进去 | 亚洲伊人久久精品影院 | 久久久久99精品国产片 | 日韩在线不卡免费视频一区 | 天天躁日日躁狠狠躁免费麻豆 | 久久久久免费看成人影片 | 亚洲成av人综合在线观看 | 伊人久久大香线蕉av一区二区 | 亚洲精品欧美二区三区中文字幕 | a在线亚洲男人的天堂 | 久久综合激激的五月天 | 亚洲一区二区三区无码久久 | 大肉大捧一进一出视频出来呀 | 国产亚av手机在线观看 | 香港三级日本三级妇三级 | 日韩人妻系列无码专区 | 久久精品中文闷骚内射 | 综合激情五月综合激情五月激情1 | 欧美日韩一区二区三区自拍 | 人妻少妇精品无码专区动漫 | 久久久久成人精品免费播放动漫 | 亚洲综合在线一区二区三区 | 国产偷自视频区视频 | 亚洲色大成网站www | 精品一区二区三区波多野结衣 | 亚洲色无码一区二区三区 | 中文字幕乱码人妻二区三区 | 国产麻豆精品精东影业av网站 | 久久99精品国产.久久久久 | 樱花草在线社区www | 无人区乱码一区二区三区 | 三上悠亚人妻中文字幕在线 | 中文字幕av无码一区二区三区电影 | 久久午夜无码鲁丝片午夜精品 | 少妇性荡欲午夜性开放视频剧场 | 国产午夜福利100集发布 | 精品一二三区久久aaa片 | 成人精品一区二区三区中文字幕 | 日韩无套无码精品 | 国产亚洲精品久久久闺蜜 | 国产综合久久久久鬼色 | 我要看www免费看插插视频 | 一本久道久久综合狠狠爱 | 亚洲国产精品无码久久久久高潮 | 无码人妻丰满熟妇区五十路百度 | 好屌草这里只有精品 | 日本www一道久久久免费榴莲 | 亚洲中文字幕在线观看 | 全黄性性激高免费视频 | 国产香蕉尹人视频在线 | 亚洲中文字幕在线无码一区二区 | 在线播放免费人成毛片乱码 | 美女极度色诱视频国产 | 欧美日韩一区二区综合 | 动漫av一区二区在线观看 | 亚洲精品午夜国产va久久成人 | 国产精品美女久久久久av爽李琼 | 丁香啪啪综合成人亚洲 | 亚洲色在线无码国产精品不卡 | 久久久久免费精品国产 | 18精品久久久无码午夜福利 | 久久久精品成人免费观看 | 午夜丰满少妇性开放视频 | 夫妻免费无码v看片 | 无码国产乱人伦偷精品视频 | 亚洲欧美国产精品久久 | 丝袜 中出 制服 人妻 美腿 | 人妻少妇精品视频专区 | 亚洲精品成人av在线 | 久热国产vs视频在线观看 | 国产深夜福利视频在线 | 欧美一区二区三区 | 日韩亚洲欧美中文高清在线 | 给我免费的视频在线观看 | 少妇无套内谢久久久久 | 亚洲日韩av一区二区三区中文 | 欧美性生交活xxxxxdddd | 亚洲色无码一区二区三区 | 亚洲一区二区三区偷拍女厕 | 欧美老熟妇乱xxxxx | 天天av天天av天天透 | 国产精品自产拍在线观看 | 在线а√天堂中文官网 | 日本熟妇人妻xxxxx人hd | 激情国产av做激情国产爱 | 无码吃奶揉捏奶头高潮视频 | 少女韩国电视剧在线观看完整 | 中文精品无码中文字幕无码专区 | 在线成人www免费观看视频 | 2020久久超碰国产精品最新 | av小次郎收藏 | 亚洲欧美日韩综合久久久 | 午夜免费福利小电影 | 国产精品久久久久影院嫩草 | 中文字幕亚洲情99在线 | 日本丰满熟妇videos | 人人澡人人透人人爽 | 综合人妻久久一区二区精品 | 亚洲精品久久久久久一区二区 | 青青久在线视频免费观看 | 青青久在线视频免费观看 | 在线播放免费人成毛片乱码 | 色老头在线一区二区三区 | 一本久道久久综合婷婷五月 | 青青久在线视频免费观看 | 男人和女人高潮免费网站 | 亚洲欧洲无卡二区视頻 | 日韩精品久久久肉伦网站 | 好爽又高潮了毛片免费下载 | 女人被男人躁得好爽免费视频 | 欧美丰满老熟妇xxxxx性 | 亚洲а∨天堂久久精品2021 | 久久久久国色av免费观看性色 | 国产精品毛片一区二区 | 狂野欧美性猛xxxx乱大交 | 亚洲一区av无码专区在线观看 | 久久精品人人做人人综合试看 | 97色伦图片97综合影院 | 99久久人妻精品免费二区 | 亚洲中文字幕无码中文字在线 | 久久人人爽人人爽人人片ⅴ | 欧美精品在线观看 | 又大又紧又粉嫩18p少妇 | ass日本丰满熟妇pics | 成熟女人特级毛片www免费 | 国产熟妇另类久久久久 | 久久综合久久自在自线精品自 | 九九在线中文字幕无码 | 激情内射亚州一区二区三区爱妻 | 55夜色66夜色国产精品视频 | 日本爽爽爽爽爽爽在线观看免 | 日韩欧美中文字幕公布 | 国产精品怡红院永久免费 | 久久无码中文字幕免费影院蜜桃 | 欧美高清在线精品一区 | 青草青草久热国产精品 | 少妇太爽了在线观看 | 久久久久99精品国产片 | 中文字幕av日韩精品一区二区 | 国产精品美女久久久久av爽李琼 | 精品无码av一区二区三区 | 六十路熟妇乱子伦 | 成人三级无码视频在线观看 | 成人精品天堂一区二区三区 | 天堂无码人妻精品一区二区三区 | 成人亚洲精品久久久久软件 | 又大又硬又黄的免费视频 | 中文字幕乱码人妻二区三区 | 亚洲国产精品一区二区美利坚 | 日本爽爽爽爽爽爽在线观看免 | 欧美亚洲日韩国产人成在线播放 | 波多野结衣aⅴ在线 | 天堂а√在线中文在线 | 免费国产成人高清在线观看网站 | 天天av天天av天天透 | 中文字幕亚洲情99在线 | 亚洲一区二区观看播放 | 国模大胆一区二区三区 | 一本久道高清无码视频 | 99久久久无码国产aaa精品 | 国产精品高潮呻吟av久久4虎 | aa片在线观看视频在线播放 | 亚洲熟妇色xxxxx欧美老妇y | 成人无码影片精品久久久 | 亚洲日韩乱码中文无码蜜桃臀网站 | 久久精品一区二区三区四区 | 麻豆人妻少妇精品无码专区 | 亚洲精品欧美二区三区中文字幕 | 国产真实乱对白精彩久久 | 国产免费久久精品国产传媒 | 思思久久99热只有频精品66 | 狠狠亚洲超碰狼人久久 | 欧美老妇与禽交 | 精品国偷自产在线视频 | 人人妻人人澡人人爽人人精品 | 激情综合激情五月俺也去 | 国产亚洲欧美日韩亚洲中文色 | 成在人线av无码免费 | 97无码免费人妻超级碰碰夜夜 | 99riav国产精品视频 | 国产精品无码成人午夜电影 | 国产精品a成v人在线播放 | 午夜理论片yy44880影院 | 在线播放免费人成毛片乱码 | 1000部啪啪未满十八勿入下载 | 美女黄网站人色视频免费国产 | 精品久久久中文字幕人妻 | 久久久久se色偷偷亚洲精品av | 婷婷色婷婷开心五月四房播播 | 九九在线中文字幕无码 | 又粗又大又硬毛片免费看 | 国产无套内射久久久国产 | 草草网站影院白丝内射 | 中文字幕+乱码+中文字幕一区 | 国产麻豆精品一区二区三区v视界 | 狠狠亚洲超碰狼人久久 | 人妻无码αv中文字幕久久琪琪布 | 乌克兰少妇性做爰 | 网友自拍区视频精品 | 国产亚洲视频中文字幕97精品 | 亚洲精品综合一区二区三区在线 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 男女超爽视频免费播放 | 国产内射爽爽大片视频社区在线 | 日韩少妇白浆无码系列 | 国产精品无码一区二区三区不卡 | 精品国产一区二区三区四区 | 亚欧洲精品在线视频免费观看 | 国产激情无码一区二区app | 久激情内射婷内射蜜桃人妖 | 国产sm调教视频在线观看 | 美女极度色诱视频国产 | 成熟妇人a片免费看网站 | 久激情内射婷内射蜜桃人妖 | 成人无码影片精品久久久 | 欧美亚洲日韩国产人成在线播放 | 一本久久a久久精品vr综合 | 国内综合精品午夜久久资源 | 成年女人永久免费看片 | 又湿又紧又大又爽a视频国产 | 97夜夜澡人人爽人人喊中国片 | 97色伦图片97综合影院 | 亚洲成av人片在线观看无码不卡 | 国内揄拍国内精品少妇国语 | 成在人线av无码免费 | 少妇性荡欲午夜性开放视频剧场 | 色综合久久中文娱乐网 | www国产精品内射老师 | 久久国产精品偷任你爽任你 | 人妻中文无码久热丝袜 | 久久精品国产99久久6动漫 | 99久久精品日本一区二区免费 | 日本乱人伦片中文三区 | 人人妻人人澡人人爽欧美精品 | 99re在线播放 | 日本又色又爽又黄的a片18禁 | 中文字幕色婷婷在线视频 | 在线播放无码字幕亚洲 | 亚洲aⅴ无码成人网站国产app | 久久99国产综合精品 | 中国女人内谢69xxxx | 我要看www免费看插插视频 | 97精品人妻一区二区三区香蕉 | 蜜臀av无码人妻精品 | 久久97精品久久久久久久不卡 | 日本在线高清不卡免费播放 | 午夜福利试看120秒体验区 | 蜜桃视频插满18在线观看 | 97色伦图片97综合影院 | 影音先锋中文字幕无码 | 人人妻人人藻人人爽欧美一区 | 免费中文字幕日韩欧美 | 夜夜夜高潮夜夜爽夜夜爰爰 | 老熟女乱子伦 | 亚洲精品无码人妻无码 | 露脸叫床粗话东北少妇 | 国产麻豆精品一区二区三区v视界 | 久久综合久久自在自线精品自 | 亚洲乱码日产精品bd | 亚洲综合无码久久精品综合 | 亚洲成av人在线观看网址 | 婷婷五月综合激情中文字幕 | 国产免费观看黄av片 | 免费无码的av片在线观看 | 精品成人av一区二区三区 | 午夜时刻免费入口 | 无码国内精品人妻少妇 | 国产精品毛片一区二区 | 久久国产精品二国产精品 | 无码人妻丰满熟妇区毛片18 | 午夜精品一区二区三区在线观看 | 毛片内射-百度 | 精品aⅴ一区二区三区 | 亚洲熟女一区二区三区 | 国产极品视觉盛宴 | 99久久人妻精品免费一区 | 国产欧美熟妇另类久久久 | 窝窝午夜理论片影院 | 精品国产aⅴ无码一区二区 | 任你躁在线精品免费 | 中文久久乱码一区二区 | 在线播放无码字幕亚洲 | 免费人成在线观看网站 | 亚洲成av人片在线观看无码不卡 | 国产成人一区二区三区在线观看 | 中文字幕无码av激情不卡 | 伦伦影院午夜理论片 | 2020最新国产自产精品 | 国产片av国语在线观看 | 国产九九九九九九九a片 | 东京热男人av天堂 | 亚洲国产精品成人久久蜜臀 | 人人妻人人澡人人爽欧美一区 | 成年美女黄网站色大免费视频 | 色婷婷综合激情综在线播放 | 国产精品国产三级国产专播 | 国产日产欧产精品精品app | 亚洲欧美国产精品久久 | 波多野结衣乳巨码无在线观看 | 国产人妻大战黑人第1集 | 国产精品第一区揄拍无码 | 强辱丰满人妻hd中文字幕 | 亚洲成av人影院在线观看 | 精品人妻人人做人人爽 | 亚洲欧洲中文日韩av乱码 | 精品国产青草久久久久福利 | 国内精品人妻无码久久久影院 | 性欧美牲交xxxxx视频 | 日韩少妇白浆无码系列 | 国产精品福利视频导航 | 欧美激情内射喷水高潮 | 国产综合久久久久鬼色 | 欧美第一黄网免费网站 | 欧美精品一区二区精品久久 | 国产成人无码av在线影院 | 亚洲成a人片在线观看无码 | 免费无码一区二区三区蜜桃大 | 18禁黄网站男男禁片免费观看 | 中文字幕av日韩精品一区二区 | 国内精品人妻无码久久久影院 | 女人被男人躁得好爽免费视频 | 欧美猛少妇色xxxxx | 成人av无码一区二区三区 | 中文无码精品a∨在线观看不卡 | 久久国产精品萌白酱免费 | √8天堂资源地址中文在线 | 扒开双腿疯狂进出爽爽爽视频 | 内射白嫩少妇超碰 | 欧美黑人巨大xxxxx | 成人aaa片一区国产精品 | 日韩精品a片一区二区三区妖精 | 中文字幕乱码中文乱码51精品 | 久久国产精品萌白酱免费 | 四虎永久在线精品免费网址 | aⅴ亚洲 日韩 色 图网站 播放 | 国产精品久久久午夜夜伦鲁鲁 | 免费人成在线观看网站 | 国产办公室秘书无码精品99 | 欧美激情一区二区三区成人 | yw尤物av无码国产在线观看 | 久久精品国产大片免费观看 | 国产亚洲精品久久久ai换 | 无码国内精品人妻少妇 | 狠狠噜狠狠狠狠丁香五月 | 高清国产亚洲精品自在久久 | 人人妻人人澡人人爽精品欧美 | 强伦人妻一区二区三区视频18 | 欧美激情内射喷水高潮 | 国产麻豆精品精东影业av网站 | 中文字幕无码热在线视频 | 日韩av无码中文无码电影 | 日本大乳高潮视频在线观看 | 亚洲国产综合无码一区 | 无码任你躁久久久久久久 | 久久久久亚洲精品中文字幕 | 亚洲精品中文字幕乱码 | 99久久人妻精品免费二区 | 国产一区二区不卡老阿姨 | 午夜无码区在线观看 | 无码帝国www无码专区色综合 | 99久久人妻精品免费二区 | 内射巨臀欧美在线视频 | 久久精品视频在线看15 | 国产人妻精品一区二区三区不卡 | 欧美日韩一区二区免费视频 | 午夜不卡av免费 一本久久a久久精品vr综合 | 色爱情人网站 | 国产无av码在线观看 | 国产精品自产拍在线观看 | 亚洲一区二区三区国产精华液 | 久久久久久久人妻无码中文字幕爆 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 欧美一区二区三区视频在线观看 | 精品 日韩 国产 欧美 视频 | 青青青手机频在线观看 | 色婷婷久久一区二区三区麻豆 | 捆绑白丝粉色jk震动捧喷白浆 | 女人被男人爽到呻吟的视频 | 中文字幕人成乱码熟女app | 国模大胆一区二区三区 | 日韩av无码一区二区三区 | yw尤物av无码国产在线观看 | 少妇高潮一区二区三区99 | 欧美日韩视频无码一区二区三 | 国产精品.xx视频.xxtv | 丰满岳乱妇在线观看中字无码 | 青青青手机频在线观看 | 亚洲精品一区二区三区大桥未久 | 久久精品人人做人人综合 | 综合人妻久久一区二区精品 | 国产超碰人人爽人人做人人添 | 国产xxx69麻豆国语对白 | 思思久久99热只有频精品66 | 亚洲经典千人经典日产 | 伊人久久大香线焦av综合影院 | av人摸人人人澡人人超碰下载 | 成人精品视频一区二区三区尤物 | 国产精品自产拍在线观看 | 又色又爽又黄的美女裸体网站 | 98国产精品综合一区二区三区 | 女人被爽到呻吟gif动态图视看 | 亚洲精品国产a久久久久久 | 国产女主播喷水视频在线观看 | 日日碰狠狠躁久久躁蜜桃 | 国精产品一区二区三区 | 亚洲国产精品久久人人爱 | 99久久99久久免费精品蜜桃 | 久久久国产精品无码免费专区 | 无码人妻精品一区二区三区不卡 | 国产精品99久久精品爆乳 | 久久久久久av无码免费看大片 | 在教室伦流澡到高潮hnp视频 | 国产明星裸体无码xxxx视频 | 国产精品久久久久久无码 | 亚洲精品成人福利网站 | 亚洲精品中文字幕久久久久 | 亚洲の无码国产の无码影院 | 国产在线精品一区二区高清不卡 | 国精产品一区二区三区 | 久久国语露脸国产精品电影 | 狠狠色欧美亚洲狠狠色www | 久久综合给久久狠狠97色 | 久久亚洲国产成人精品性色 | 国产精品久久久一区二区三区 | 国产精品久久久久久亚洲影视内衣 | 97色伦图片97综合影院 | 亚洲熟妇色xxxxx欧美老妇 | 欧美午夜特黄aaaaaa片 | 正在播放东北夫妻内射 | 99久久婷婷国产综合精品青草免费 | 一本大道久久东京热无码av | 亚洲欧美综合区丁香五月小说 | 亚洲日韩中文字幕在线播放 | 性欧美大战久久久久久久 | 中文字幕人妻无码一区二区三区 | 国产乱子伦视频在线播放 | 女人色极品影院 | 婷婷五月综合缴情在线视频 | 免费观看黄网站 | 性欧美大战久久久久久久 | 内射巨臀欧美在线视频 | aⅴ亚洲 日韩 色 图网站 播放 | 人妻少妇精品无码专区动漫 | 国产亚洲精品久久久久久久久动漫 | 日韩精品成人一区二区三区 | 日日鲁鲁鲁夜夜爽爽狠狠 | 亚洲国产精品毛片av不卡在线 | 自拍偷自拍亚洲精品被多人伦好爽 | 疯狂三人交性欧美 | 亚洲 a v无 码免 费 成 人 a v | 国产精品久久久久久亚洲毛片 | 成人av无码一区二区三区 | 乱码av麻豆丝袜熟女系列 | 国产人妖乱国产精品人妖 | 亚洲成av人片天堂网无码】 | 美女黄网站人色视频免费国产 | 成人无码视频免费播放 | 亚洲精品成人福利网站 | 两性色午夜视频免费播放 | 久久99精品久久久久久动态图 | 性欧美疯狂xxxxbbbb | 青青青手机频在线观看 | 国产精品人人妻人人爽 | 亚洲日韩一区二区三区 | 国产 浪潮av性色四虎 | 亚洲中文字幕无码一久久区 | 欧美人与禽猛交狂配 | 欧洲极品少妇 | 高潮毛片无遮挡高清免费视频 | 日本乱偷人妻中文字幕 | 东京无码熟妇人妻av在线网址 | 国产亚洲精品久久久久久 | 国产无遮挡又黄又爽免费视频 | 午夜理论片yy44880影院 | 日本高清一区免费中文视频 | 国产9 9在线 | 中文 | 免费视频欧美无人区码 | 久久久久亚洲精品中文字幕 | 无码人妻出轨黑人中文字幕 | 成人综合网亚洲伊人 | 免费播放一区二区三区 | 欧美丰满熟妇xxxx | 女人被男人爽到呻吟的视频 | 帮老师解开蕾丝奶罩吸乳网站 | 国产成人无码午夜视频在线观看 | 日韩成人一区二区三区在线观看 | 综合网日日天干夜夜久久 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 亚洲国产精品久久人人爱 | 日本护士xxxxhd少妇 | 永久黄网站色视频免费直播 | 国内老熟妇对白xxxxhd | 中文无码精品a∨在线观看不卡 | 少妇激情av一区二区 | 国产精品无码一区二区桃花视频 | 国产精品亚洲专区无码不卡 | 丰满少妇熟乱xxxxx视频 | 激情内射亚州一区二区三区爱妻 | 国产精品嫩草久久久久 | 国产69精品久久久久app下载 | 亚洲自偷自偷在线制服 | 内射巨臀欧美在线视频 | 自拍偷自拍亚洲精品被多人伦好爽 | 中文字幕av伊人av无码av | 色一情一乱一伦 | 丰满人妻一区二区三区免费视频 | 国产精品久久福利网站 | 一本无码人妻在中文字幕免费 | 国产精品视频免费播放 | 亚洲人成网站在线播放942 | 国内精品九九久久久精品 | 久久99热只有频精品8 | 亚洲精品鲁一鲁一区二区三区 | 无码乱肉视频免费大全合集 | 久久视频在线观看精品 | 久久人人97超碰a片精品 | 国产成人综合色在线观看网站 | 国产三级精品三级男人的天堂 | 久久99精品国产麻豆蜜芽 | 99久久精品国产一区二区蜜芽 | www国产亚洲精品久久久日本 | 中文字幕无线码 | 亚洲欧洲无卡二区视頻 | 亚洲日韩中文字幕在线播放 | 亚洲va中文字幕无码久久不卡 | 免费看少妇作爱视频 | 国产成人精品三级麻豆 | 国产又爽又猛又粗的视频a片 | 对白脏话肉麻粗话av | 精品成在人线av无码免费看 | 又大又紧又粉嫩18p少妇 | 成人亚洲精品久久久久软件 | 欧美人与物videos另类 | 亚洲毛片av日韩av无码 | 日本一卡2卡3卡四卡精品网站 | 久久成人a毛片免费观看网站 | 纯爱无遮挡h肉动漫在线播放 | 亚洲色偷偷偷综合网 | 国产真实伦对白全集 | a片免费视频在线观看 | 日日鲁鲁鲁夜夜爽爽狠狠 | 丰满人妻翻云覆雨呻吟视频 | 嫩b人妻精品一区二区三区 | 成熟人妻av无码专区 | 人妻aⅴ无码一区二区三区 | 成人一在线视频日韩国产 | 国产综合久久久久鬼色 | а天堂中文在线官网 | 精品久久久无码中文字幕 | 装睡被陌生人摸出水好爽 | 亚洲欧美精品伊人久久 | 亚洲国产欧美在线成人 | 欧美老熟妇乱xxxxx | 国产成人无码a区在线观看视频app | 亚洲中文字幕无码一久久区 | 性做久久久久久久久 | 东京热男人av天堂 | 无遮无挡爽爽免费视频 | 免费观看黄网站 | 双乳奶水饱满少妇呻吟 | 在线欧美精品一区二区三区 | 成人一区二区免费视频 | 亚洲精品欧美二区三区中文字幕 | 日本在线高清不卡免费播放 | 亚洲自偷自偷在线制服 | 少妇人妻av毛片在线看 | 俺去俺来也在线www色官网 | 青草青草久热国产精品 | 18无码粉嫩小泬无套在线观看 | a片在线免费观看 | 日本熟妇人妻xxxxx人hd | 日本一区二区更新不卡 | 美女扒开屁股让男人桶 | 国产成人av免费观看 | 成 人 免费观看网站 | 色婷婷香蕉在线一区二区 | 欧洲欧美人成视频在线 | 风流少妇按摩来高潮 | 欧美日韩亚洲国产精品 | 国产莉萝无码av在线播放 | 亚洲精品美女久久久久久久 | 久久久久久av无码免费看大片 | 欧美午夜特黄aaaaaa片 | 亚洲a无码综合a国产av中文 | 97无码免费人妻超级碰碰夜夜 | 精品人妻中文字幕有码在线 | 无码av免费一区二区三区试看 | 久久无码专区国产精品s | 日韩精品久久久肉伦网站 | 欧美自拍另类欧美综合图片区 | 久久久中文字幕日本无吗 | 国产色xx群视频射精 | 日韩精品一区二区av在线 | 人人澡人人透人人爽 | 99麻豆久久久国产精品免费 | 欧美日韩人成综合在线播放 | 女人色极品影院 | 国产亚洲日韩欧美另类第八页 | 欧美亚洲国产一区二区三区 | 国产精品永久免费视频 | 老太婆性杂交欧美肥老太 | 日韩亚洲欧美中文高清在线 | 亚洲综合另类小说色区 | 97久久国产亚洲精品超碰热 | 久久久久亚洲精品男人的天堂 | 一个人看的www免费视频在线观看 | 男女性色大片免费网站 | 亚洲爆乳精品无码一区二区三区 | 欧美日韩在线亚洲综合国产人 | 久久精品丝袜高跟鞋 | 亚洲自偷自拍另类第1页 | 亚洲国产午夜精品理论片 | 一本色道久久综合狠狠躁 | 国产精品视频免费播放 | 少妇性l交大片欧洲热妇乱xxx | av无码电影一区二区三区 | 久久99精品久久久久久 | 亚洲理论电影在线观看 | 国产9 9在线 | 中文 | 曰本女人与公拘交酡免费视频 | 欧美熟妇另类久久久久久不卡 | 中文字幕av伊人av无码av | 人妻人人添人妻人人爱 | 中文字幕人妻无码一区二区三区 | 成人精品一区二区三区中文字幕 | 一本色道婷婷久久欧美 | 欧美精品免费观看二区 | 欧美三级a做爰在线观看 | 国产无遮挡吃胸膜奶免费看 | 中文字幕久久久久人妻 | 国产精品久久久av久久久 | 久久久精品人妻久久影视 | 强辱丰满人妻hd中文字幕 | 99久久精品无码一区二区毛片 | 又大又硬又爽免费视频 | 日韩视频 中文字幕 视频一区 | 国产在线一区二区三区四区五区 | 精品日本一区二区三区在线观看 | 精品 日韩 国产 欧美 视频 | 无码乱肉视频免费大全合集 | 夜夜高潮次次欢爽av女 | 99国产精品白浆在线观看免费 | 免费无码一区二区三区蜜桃大 | 亚洲理论电影在线观看 | 九九在线中文字幕无码 | 色欲久久久天天天综合网精品 | 免费观看激色视频网站 | 亚洲日本va午夜在线电影 | 人人澡人人妻人人爽人人蜜桃 | 欧洲vodafone精品性 | a片在线免费观看 | 久久久精品国产sm最大网站 | 伊人久久婷婷五月综合97色 | 日韩av无码中文无码电影 | 任你躁国产自任一区二区三区 | 少妇的肉体aa片免费 | 日韩无套无码精品 | 97夜夜澡人人爽人人喊中国片 | 国产精品久久久午夜夜伦鲁鲁 | 无码人妻丰满熟妇区五十路百度 | 人妻少妇精品无码专区二区 | 一区二区三区高清视频一 | 欧美激情综合亚洲一二区 | 国产精品无码一区二区三区不卡 | 天天av天天av天天透 | 黄网在线观看免费网站 | 一本久道久久综合狠狠爱 | 老司机亚洲精品影院 | 呦交小u女精品视频 | 最近中文2019字幕第二页 | 国产美女精品一区二区三区 | 无码国产色欲xxxxx视频 | 黑人巨大精品欧美一区二区 | 奇米影视888欧美在线观看 | 亚洲精品成人av在线 | 免费中文字幕日韩欧美 | 狂野欧美性猛交免费视频 | 午夜无码区在线观看 | 亚洲区小说区激情区图片区 | 婷婷六月久久综合丁香 | 久久亚洲日韩精品一区二区三区 | 在线 国产 欧美 亚洲 天堂 | 亚洲国产一区二区三区在线观看 | 日韩av激情在线观看 | 亚洲日本va午夜在线电影 | 欧美丰满熟妇xxxx | av无码电影一区二区三区 | 国产成人无码午夜视频在线观看 | 精品久久久无码中文字幕 | 伊人色综合久久天天小片 | 欧美成人家庭影院 | 装睡被陌生人摸出水好爽 | 麻豆国产97在线 | 欧洲 | 色综合天天综合狠狠爱 | 少妇无码av无码专区在线观看 | 亚洲精品久久久久久一区二区 | 欧美熟妇另类久久久久久不卡 | 天天做天天爱天天爽综合网 | 国产精品手机免费 | ass日本丰满熟妇pics | 永久黄网站色视频免费直播 | av无码电影一区二区三区 | 亚洲经典千人经典日产 | 国产精品内射视频免费 | 久久久久人妻一区精品色欧美 | 亚洲啪av永久无码精品放毛片 | 窝窝午夜理论片影院 | 国产成人无码区免费内射一片色欲 | 久久精品人妻少妇一区二区三区 | 国产av一区二区精品久久凹凸 | 国产黄在线观看免费观看不卡 | 无遮挡国产高潮视频免费观看 | 久久精品中文字幕一区 | 国产在线无码精品电影网 | 精品无码一区二区三区爱欲 | 伊在人天堂亚洲香蕉精品区 | 精品国产一区二区三区四区在线看 | 精品国产国产综合精品 | 精品国产一区二区三区四区 | av无码电影一区二区三区 | 成人毛片一区二区 | yw尤物av无码国产在线观看 | 亚洲精品成人福利网站 | 一个人看的www免费视频在线观看 | 未满小14洗澡无码视频网站 | 国产av无码专区亚洲a∨毛片 | 夜夜影院未满十八勿进 | 无码一区二区三区在线 | 一区二区传媒有限公司 | 国内精品久久久久久中文字幕 | 国产成人精品三级麻豆 | 一本大道久久东京热无码av | 男女超爽视频免费播放 | 亚洲 a v无 码免 费 成 人 a v | 一本大道久久东京热无码av | 国产乱人伦av在线无码 | 中文字幕 亚洲精品 第1页 | 成 人 免费观看网站 | 男人的天堂2018无码 | 中文字幕无码免费久久9一区9 | 久久久久国色av免费观看性色 | 国产激情精品一区二区三区 | 无码中文字幕色专区 | 真人与拘做受免费视频 | 男女下面进入的视频免费午夜 | 久久精品国产日本波多野结衣 | 国产成人综合色在线观看网站 | 国产人妖乱国产精品人妖 | 国产精品二区一区二区aⅴ污介绍 | 亚洲无人区一区二区三区 | 欧美一区二区三区视频在线观看 | www一区二区www免费 | 亚洲国产欧美在线成人 | 国产真实夫妇视频 | 在线精品国产一区二区三区 | 老熟妇乱子伦牲交视频 | 日韩av无码一区二区三区 | 亚洲精品国产精品乱码视色 | 欧美国产日韩亚洲中文 | 青草视频在线播放 | 久久久久免费看成人影片 | 亚洲午夜福利在线观看 | 黑人玩弄人妻中文在线 | 在线 国产 欧美 亚洲 天堂 | 荫蒂被男人添的好舒服爽免费视频 | 亚洲日本一区二区三区在线 | 黑人巨大精品欧美黑寡妇 | 国产午夜视频在线观看 | 人人澡人人透人人爽 | 最近中文2019字幕第二页 | 黑人玩弄人妻中文在线 | 亚洲色www成人永久网址 | 国产精品多人p群无码 | 帮老师解开蕾丝奶罩吸乳网站 | 荫蒂添的好舒服视频囗交 | 国产激情艳情在线看视频 | 亚洲人成网站在线播放942 | 国产办公室秘书无码精品99 | 亚洲中文字幕乱码av波多ji | 久久久婷婷五月亚洲97号色 | 国产亚洲精品久久久久久久久动漫 | 久久久久亚洲精品男人的天堂 | 久久久久亚洲精品男人的天堂 | 欧洲欧美人成视频在线 | 99riav国产精品视频 | 成人欧美一区二区三区黑人 | 国产午夜手机精彩视频 | 精品日本一区二区三区在线观看 | www成人国产高清内射 | av在线亚洲欧洲日产一区二区 | 人妻天天爽夜夜爽一区二区 | 国产农村妇女高潮大叫 | 亚洲成av人片在线观看无码不卡 | 欧美人妻一区二区三区 | 成熟妇人a片免费看网站 | 国产精品人人爽人人做我的可爱 | 久精品国产欧美亚洲色aⅴ大片 | 三上悠亚人妻中文字幕在线 | 无码帝国www无码专区色综合 | 亚洲日韩av一区二区三区中文 | 日本丰满熟妇videos | 人妻无码久久精品人妻 | 精品亚洲成av人在线观看 | 亚洲精品国产精品乱码不卡 | 免费播放一区二区三区 | 国产精品久久久久久久影院 | 一区二区三区高清视频一 | 亚洲码国产精品高潮在线 | 人人妻人人澡人人爽人人精品 | www国产亚洲精品久久网站 | 秋霞特色aa大片 | 成人无码视频免费播放 | 国产成人精品优优av | 亚洲另类伦春色综合小说 | 国产av一区二区精品久久凹凸 | 免费播放一区二区三区 | 亚洲中文字幕成人无码 | 日本乱人伦片中文三区 | 在线看片无码永久免费视频 | 黑人巨大精品欧美一区二区 | 亚洲精品国偷拍自产在线麻豆 | 少妇人妻大乳在线视频 | 性欧美大战久久久久久久 | 国内精品九九久久久精品 | 荫蒂被男人添的好舒服爽免费视频 | 内射爽无广熟女亚洲 | 国产精品第一区揄拍无码 | 国产人妻人伦精品 | 成人一区二区免费视频 | 无码人妻久久一区二区三区不卡 | 亚洲国产一区二区三区在线观看 | 亚洲综合另类小说色区 | 正在播放老肥熟妇露脸 | 天天做天天爱天天爽综合网 | 亚洲 高清 成人 动漫 | 波多野结衣一区二区三区av免费 | 精品aⅴ一区二区三区 | 中文亚洲成a人片在线观看 | 草草网站影院白丝内射 | 久久精品一区二区三区四区 | 老熟女重囗味hdxx69 | 久久人妻内射无码一区三区 | 成年美女黄网站色大免费视频 | 国产亚洲精品久久久久久国模美 | 天天综合网天天综合色 | 天天躁日日躁狠狠躁免费麻豆 | 18禁止看的免费污网站 | 国产精品久久久久久亚洲影视内衣 | 婷婷五月综合激情中文字幕 | 欧美猛少妇色xxxxx | 中文字幕人妻无码一区二区三区 | 99re在线播放 | 十八禁真人啪啪免费网站 | 免费网站看v片在线18禁无码 | 国产偷自视频区视频 | 国产亚av手机在线观看 | 亚洲国产成人av在线观看 | аⅴ资源天堂资源库在线 | 亚洲午夜久久久影院 | 国产精品丝袜黑色高跟鞋 | 玩弄人妻少妇500系列视频 | 中文字幕+乱码+中文字幕一区 | 欧美成人免费全部网站 | 麻豆国产人妻欲求不满 | 精品熟女少妇av免费观看 | 亚洲熟妇自偷自拍另类 | 国产超碰人人爽人人做人人添 | 亚洲无人区一区二区三区 | 人妻有码中文字幕在线 | 东京热一精品无码av | 国产精品人人爽人人做我的可爱 | 成人无码精品一区二区三区 | 亚洲无人区午夜福利码高清完整版 | 黑森林福利视频导航 | 无码毛片视频一区二区本码 | 99久久人妻精品免费一区 | 97久久精品无码一区二区 | 久久久久久九九精品久 | 国产精品自产拍在线观看 | 天堂а√在线地址中文在线 | 国产精品福利视频导航 | 亚洲日韩av一区二区三区四区 | 亚洲人成网站免费播放 | 2020最新国产自产精品 | 中文久久乱码一区二区 | a片免费视频在线观看 | 美女黄网站人色视频免费国产 | 国产精品欧美成人 | 精品人妻av区 | 国产亚洲精品久久久久久大师 | 少妇性l交大片 | 性欧美牲交xxxxx视频 | 乱人伦人妻中文字幕无码久久网 | 久久国产精品偷任你爽任你 | 日本熟妇人妻xxxxx人hd | 亚洲精品一区三区三区在线观看 | 国产口爆吞精在线视频 | 婷婷综合久久中文字幕蜜桃三电影 | 俺去俺来也www色官网 | 国产激情无码一区二区 | 国产无遮挡又黄又爽免费视频 | 麻豆国产人妻欲求不满谁演的 | 最近免费中文字幕中文高清百度 | 日韩欧美中文字幕在线三区 | 国产成人人人97超碰超爽8 | 激情亚洲一区国产精品 | 色综合视频一区二区三区 | 国产亚洲精品久久久久久大师 | 国产乱码精品一品二品 | 欧美人与禽zoz0性伦交 | 久久综合九色综合欧美狠狠 | 999久久久国产精品消防器材 | 国产精品人人妻人人爽 | 无码av中文字幕免费放 | 欧美日韩在线亚洲综合国产人 | 网友自拍区视频精品 | 国产精品高潮呻吟av久久4虎 | 日韩精品无码一本二本三本色 | 国産精品久久久久久久 | 亚洲精品综合五月久久小说 | 国产热a欧美热a在线视频 | 精品国产一区二区三区四区 | 亚洲精品中文字幕久久久久 | 国产欧美精品一区二区三区 | 久久久久亚洲精品中文字幕 | 国产精品毛多多水多 | 美女扒开屁股让男人桶 | 亚洲综合无码久久精品综合 | 无套内谢老熟女 | 亚洲中文字幕在线观看 | 欧美成人高清在线播放 | 日产国产精品亚洲系列 | 国产午夜亚洲精品不卡下载 | 丰满人妻翻云覆雨呻吟视频 | 亚洲成av人综合在线观看 | 欧美性生交xxxxx久久久 | 在线看片无码永久免费视频 | 中文字幕av日韩精品一区二区 | 久久久成人毛片无码 | 东京无码熟妇人妻av在线网址 | 亚洲精品午夜国产va久久成人 | 久久国产精品精品国产色婷婷 | 亚洲成av人在线观看网址 | 99久久人妻精品免费二区 | 西西人体www44rt大胆高清 | 成人性做爰aaa片免费看 | 欧美野外疯狂做受xxxx高潮 | 小泽玛莉亚一区二区视频在线 | 国产成人无码av在线影院 | 好男人社区资源 | 精品国偷自产在线 | 中国女人内谢69xxxxxa片 | 男女作爱免费网站 | 亚洲春色在线视频 | 无码国模国产在线观看 | 欧美激情内射喷水高潮 | 奇米影视888欧美在线观看 | 天海翼激烈高潮到腰振不止 | 高清国产亚洲精品自在久久 | 99久久亚洲精品无码毛片 | 国产成人综合色在线观看网站 | 波多野结衣av一区二区全免费观看 | 天堂无码人妻精品一区二区三区 | 欧美老妇交乱视频在线观看 | 欧美黑人巨大xxxxx | 中文字幕无码热在线视频 | 亚洲精品国产精品乱码视色 | 亚洲精品久久久久久久久久久 | 国产精品美女久久久久av爽李琼 | 亚洲日韩中文字幕在线播放 | 婷婷五月综合激情中文字幕 | 夜精品a片一区二区三区无码白浆 | 日韩av无码一区二区三区不卡 | 国产精品久久福利网站 | 国产色xx群视频射精 | 亚洲中文无码av永久不收费 | 国产激情艳情在线看视频 | 成人av无码一区二区三区 | 鲁鲁鲁爽爽爽在线视频观看 | 免费人成在线观看网站 | 性色av无码免费一区二区三区 | 亚洲精品综合五月久久小说 | 欧美人妻一区二区三区 | 国产人妻人伦精品1国产丝袜 | 99久久无码一区人妻 | 午夜无码区在线观看 | 免费观看黄网站 | 一区二区三区乱码在线 | 欧洲 | 老熟女重囗味hdxx69 | 特级做a爰片毛片免费69 | 成人精品视频一区二区三区尤物 | 久久久久久av无码免费看大片 | 国产国语老龄妇女a片 | 国产成人无码av在线影院 | 十八禁视频网站在线观看 | 奇米影视7777久久精品 | 中文字幕无线码免费人妻 | 日本熟妇乱子伦xxxx | 亚洲精品美女久久久久久久 | 欧美老人巨大xxxx做受 | 中文字幕 亚洲精品 第1页 | 亚洲国产高清在线观看视频 | 国产成人无码av片在线观看不卡 | 男人扒开女人内裤强吻桶进去 | 国产综合在线观看 | 成人一在线视频日韩国产 | 亚洲一区二区三区播放 | 亚洲国产av精品一区二区蜜芽 | 亚洲中文字幕av在天堂 | 国产疯狂伦交大片 | 久久国产36精品色熟妇 | 色噜噜亚洲男人的天堂 | 亚洲精品一区二区三区在线观看 | 国产香蕉尹人视频在线 | 久久精品成人欧美大片 | 无套内谢老熟女 | 国产一区二区不卡老阿姨 | 色妞www精品免费视频 | 国产真人无遮挡作爱免费视频 | 理论片87福利理论电影 | 日韩人妻无码中文字幕视频 | av小次郎收藏 | 中文字幕人妻丝袜二区 | 美女毛片一区二区三区四区 | 国产在线一区二区三区四区五区 | 三上悠亚人妻中文字幕在线 | 国产香蕉尹人视频在线 | 人妻插b视频一区二区三区 | 免费观看激色视频网站 | 国产午夜亚洲精品不卡下载 | 黑人巨大精品欧美黑寡妇 | 亚洲天堂2017无码 | 成人av无码一区二区三区 | 日韩精品久久久肉伦网站 | 欧美丰满老熟妇xxxxx性 | 人人妻人人澡人人爽欧美精品 | 又黄又爽又色的视频 | 麻豆国产人妻欲求不满 | 99在线 | 亚洲 | 动漫av网站免费观看 | 国产亚洲美女精品久久久2020 | 国产乱人伦app精品久久 国产在线无码精品电影网 国产国产精品人在线视 | 99久久精品国产一区二区蜜芽 | 国产精品沙发午睡系列 | 精品午夜福利在线观看 | 人妻互换免费中文字幕 | 国产色精品久久人妻 | 精品夜夜澡人妻无码av蜜桃 | 丰满人妻翻云覆雨呻吟视频 | 精品aⅴ一区二区三区 | 亚洲一区二区三区香蕉 | 天堂无码人妻精品一区二区三区 | 国产成人无码专区 | 亚洲欧美国产精品久久 | 国产精品第一国产精品 | 国精产品一区二区三区 | 亚洲中文字幕无码中文字在线 | 国产成人无码av片在线观看不卡 | 一个人看的视频www在线 | 国产精品爱久久久久久久 | 亚洲无人区午夜福利码高清完整版 | 日本一卡2卡3卡四卡精品网站 | 中国大陆精品视频xxxx | 亚洲区欧美区综合区自拍区 | 狠狠cao日日穞夜夜穞av | 亚洲一区二区三区无码久久 | 男人和女人高潮免费网站 | 婷婷五月综合缴情在线视频 | 麻豆果冻传媒2021精品传媒一区下载 | 黑人巨大精品欧美一区二区 | 欧洲欧美人成视频在线 | 麻豆国产丝袜白领秘书在线观看 | 久激情内射婷内射蜜桃人妖 | 国产综合色产在线精品 | 亚洲综合久久一区二区 | 爽爽影院免费观看 | 亚洲精品www久久久 | 香蕉久久久久久av成人 | 妺妺窝人体色www婷婷 | 婷婷五月综合激情中文字幕 | 欧美日韩色另类综合 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 日本爽爽爽爽爽爽在线观看免 | 亚洲经典千人经典日产 | а天堂中文在线官网 | 无码人妻出轨黑人中文字幕 | а√天堂www在线天堂小说 | 女人和拘做爰正片视频 | 色爱情人网站 | 国产美女极度色诱视频www | 清纯唯美经典一区二区 | 成人精品一区二区三区中文字幕 | 一本久久a久久精品亚洲 | 精品乱码久久久久久久 | 国模大胆一区二区三区 | 人妻与老人中文字幕 | 99久久精品无码一区二区毛片 | 97久久超碰中文字幕 | 成人动漫在线观看 | 无码人妻精品一区二区三区不卡 | 精品日本一区二区三区在线观看 | 精品成人av一区二区三区 | 久久国内精品自在自线 | 97久久国产亚洲精品超碰热 | 亚洲精品国产品国语在线观看 | 久久久久久久久888 | 国产偷自视频区视频 | 爱做久久久久久 | 无码一区二区三区在线观看 | 中文字幕久久久久人妻 | 欧美精品在线观看 | 婷婷六月久久综合丁香 | 婷婷色婷婷开心五月四房播播 | 国产乱人伦偷精品视频 | 天天拍夜夜添久久精品 | 久久精品中文字幕一区 | www成人国产高清内射 | 国产精品久久久久久亚洲毛片 | 成人无码精品一区二区三区 | 欧美喷潮久久久xxxxx | 欧美第一黄网免费网站 | 亚洲成色在线综合网站 | 人人妻人人澡人人爽欧美一区九九 | 99久久婷婷国产综合精品青草免费 | 国产热a欧美热a在线视频 | 国产欧美精品一区二区三区 | 欧美人与禽猛交狂配 | 中文字幕人妻无码一夲道 | 久久视频在线观看精品 | 欧美乱妇无乱码大黄a片 | 少妇被黑人到高潮喷出白浆 | 国产精品久久久久久久9999 | 人人澡人人透人人爽 | 亚洲精品鲁一鲁一区二区三区 | 无码毛片视频一区二区本码 | 国产香蕉尹人综合在线观看 | 2019nv天堂香蕉在线观看 | 一本久久伊人热热精品中文字幕 | 国产一区二区三区四区五区加勒比 | 大肉大捧一进一出好爽视频 | 国产在热线精品视频 | 国产黑色丝袜在线播放 | 国产偷抇久久精品a片69 | 亚洲成a人片在线观看无码 | 狂野欧美激情性xxxx | 国产高清不卡无码视频 | 日本丰满熟妇videos | 欧美日韩一区二区免费视频 | 中文字幕人妻丝袜二区 | 樱花草在线社区www | 成人精品视频一区二区 | 亚洲国产一区二区三区在线观看 | 国产麻豆精品一区二区三区v视界 | 中文无码精品a∨在线观看不卡 | 丁香花在线影院观看在线播放 | 永久免费观看国产裸体美女 | 超碰97人人射妻 | 4hu四虎永久在线观看 | 欧美熟妇另类久久久久久多毛 | 久久综合给久久狠狠97色 | 国产成人人人97超碰超爽8 | 丁香啪啪综合成人亚洲 | 一本久道久久综合狠狠爱 | 亚洲精品国偷拍自产在线麻豆 | 成人欧美一区二区三区黑人免费 | 国产精品国产三级国产专播 | 高中生自慰www网站 | 国产卡一卡二卡三 | 日韩亚洲欧美中文高清在线 | 日韩在线不卡免费视频一区 | 国产精品久久久久7777 | 亚洲色欲久久久综合网东京热 | 丰满少妇弄高潮了www | 国产超级va在线观看视频 | 300部国产真实乱 | 亚洲午夜久久久影院 | 亚洲成av人片天堂网无码】 | 国产精品a成v人在线播放 | 亚洲无人区一区二区三区 | 国产成人无码av一区二区 | 大地资源网第二页免费观看 | 成在人线av无码免观看麻豆 | 色婷婷av一区二区三区之红樱桃 | 亚洲 a v无 码免 费 成 人 a v | 日本丰满熟妇videos | 成人无码精品一区二区三区 | 2019午夜福利不卡片在线 | 无码免费一区二区三区 | 中文毛片无遮挡高清免费 | 蜜臀aⅴ国产精品久久久国产老师 | 人妻无码久久精品人妻 | 国产无套粉嫩白浆在线 | 丰满岳乱妇在线观看中字无码 | 日日碰狠狠躁久久躁蜜桃 | 中文字幕乱码亚洲无线三区 | 亚洲成在人网站无码天堂 | 成人无码精品一区二区三区 | 久久精品无码一区二区三区 | 国产另类ts人妖一区二区 | 久久婷婷五月综合色国产香蕉 | 亚洲自偷自拍另类第1页 | 无码av岛国片在线播放 | 久久久久国色av免费观看性色 | 在线天堂新版最新版在线8 | 日韩人妻无码中文字幕视频 | 亚洲自偷自偷在线制服 | 老熟妇仑乱视频一区二区 | 波多野结衣乳巨码无在线观看 | 一个人看的视频www在线 | 97无码免费人妻超级碰碰夜夜 | 久久99久久99精品中文字幕 | 国产美女极度色诱视频www | 亚洲色大成网站www国产 | 少妇人妻偷人精品无码视频 | 丰满护士巨好爽好大乳 | 美女张开腿让人桶 | 国产精品久久久久久久9999 | 日日鲁鲁鲁夜夜爽爽狠狠 | 最近免费中文字幕中文高清百度 | 成人综合网亚洲伊人 | 九九久久精品国产免费看小说 | 超碰97人人射妻 | aⅴ亚洲 日韩 色 图网站 播放 | 免费国产黄网站在线观看 | 日本乱偷人妻中文字幕 | 强伦人妻一区二区三区视频18 | 野狼第一精品社区 | 久久久中文字幕日本无吗 | 娇妻被黑人粗大高潮白浆 | 麻豆国产人妻欲求不满 | 暴力强奷在线播放无码 | 国产精品久久久久9999小说 | 国产香蕉尹人综合在线观看 | 亚洲日韩av一区二区三区四区 | 精品国产乱码久久久久乱码 | 精品厕所偷拍各类美女tp嘘嘘 | 免费国产成人高清在线观看网站 | 色老头在线一区二区三区 | 国产精品毛多多水多 | 国产精品无码成人午夜电影 | 中文字幕+乱码+中文字幕一区 | 久久五月精品中文字幕 | 国产成人人人97超碰超爽8 | 日本在线高清不卡免费播放 | 久久精品中文字幕一区 | 亚洲中文字幕久久无码 | 色诱久久久久综合网ywww | 亚洲中文字幕无码中文字在线 | 夜夜影院未满十八勿进 | 人人妻人人澡人人爽人人精品 | 国产人妻精品午夜福利免费 | 中文久久乱码一区二区 | 久久亚洲中文字幕无码 | 久久国产精品二国产精品 | 欧美日韩一区二区免费视频 | 巨爆乳无码视频在线观看 | 国产一区二区三区精品视频 | 亚洲s色大片在线观看 | 狠狠cao日日穞夜夜穞av | 四虎4hu永久免费 | 国产网红无码精品视频 | 久久无码专区国产精品s | 免费视频欧美无人区码 | 国产在线精品一区二区高清不卡 | 最新版天堂资源中文官网 | 老司机亚洲精品影院 | 日韩亚洲欧美中文高清在线 | 日韩 欧美 动漫 国产 制服 | 99视频精品全部免费免费观看 | 少妇人妻大乳在线视频 | 麻豆md0077饥渴少妇 | 亚洲精品国产品国语在线观看 | 日本精品人妻无码免费大全 | 成熟人妻av无码专区 | av无码久久久久不卡免费网站 | 无码中文字幕色专区 | 亚洲综合久久一区二区 | √天堂中文官网8在线 | 欧美性生交活xxxxxdddd | 欧美喷潮久久久xxxxx | 精品久久综合1区2区3区激情 | 欧美精品无码一区二区三区 | 亚洲自偷自偷在线制服 | 亚洲男女内射在线播放 | 欧美freesex黑人又粗又大 | 日日摸天天摸爽爽狠狠97 | 亚洲高清偷拍一区二区三区 | 男女作爱免费网站 | 亚洲国产精华液网站w | 日韩精品无码免费一区二区三区 | 亚洲色无码一区二区三区 | 人妻aⅴ无码一区二区三区 | 欧美性猛交xxxx富婆 | 国产绳艺sm调教室论坛 | av香港经典三级级 在线 | 国产va免费精品观看 | 丰满少妇人妻久久久久久 | 国产精品丝袜黑色高跟鞋 | 人妻体内射精一区二区三四 | 欧美喷潮久久久xxxxx | 搡女人真爽免费视频大全 | 国内综合精品午夜久久资源 | 露脸叫床粗话东北少妇 | 国产av久久久久精东av | 波多野结衣aⅴ在线 | 欧美亚洲日韩国产人成在线播放 | 无套内谢的新婚少妇国语播放 | 狂野欧美性猛交免费视频 | 国产情侣作爱视频免费观看 | 亚欧洲精品在线视频免费观看 | 国内揄拍国内精品人妻 | 亚洲热妇无码av在线播放 | 日本饥渴人妻欲求不满 | 久久国产精品二国产精品 | 国产办公室秘书无码精品99 | 玩弄人妻少妇500系列视频 | 欧美国产日韩亚洲中文 | 亚洲精品国偷拍自产在线观看蜜桃 | 国产精品高潮呻吟av久久 | 亚洲综合久久一区二区 | 久久精品国产99精品亚洲 | 亚洲日本一区二区三区在线 | 久久国产自偷自偷免费一区调 | 激情内射日本一区二区三区 | 国产成人综合在线女婷五月99播放 | 中文字幕乱码人妻无码久久 | 国产区女主播在线观看 | 99久久久国产精品无码免费 | 亚洲日韩精品欧美一区二区 | 野狼第一精品社区 | 国内精品九九久久久精品 | 欧美精品无码一区二区三区 | 国产区女主播在线观看 | 久久精品国产精品国产精品污 | 亚洲日本va中文字幕 | 狠狠色色综合网站 | 中文字幕无码av激情不卡 | 人人澡人人妻人人爽人人蜜桃 | 成人欧美一区二区三区黑人 | 国产女主播喷水视频在线观看 | 国产色精品久久人妻 | 久久这里只有精品视频9 | 亚洲经典千人经典日产 | 国产精品久久久久久无码 | 亚洲国产一区二区三区在线观看 | 久久天天躁夜夜躁狠狠 | 黑森林福利视频导航 | 久久国产36精品色熟妇 | 99er热精品视频 | 日韩精品无码免费一区二区三区 | 色噜噜亚洲男人的天堂 | 99久久人妻精品免费一区 | 久久精品中文字幕一区 | 天堂亚洲2017在线观看 | 久久www免费人成人片 | 亚洲精品国偷拍自产在线观看蜜桃 | 福利一区二区三区视频在线观看 | 国产女主播喷水视频在线观看 | 色婷婷香蕉在线一区二区 | 亚洲热妇无码av在线播放 | 久久成人a毛片免费观看网站 | 亚洲精品鲁一鲁一区二区三区 | 日本va欧美va欧美va精品 | 久久精品丝袜高跟鞋 | 无码人中文字幕 | 日日摸天天摸爽爽狠狠97 | 成人免费视频在线观看 | 无码国产色欲xxxxx视频 | 色偷偷人人澡人人爽人人模 | 成 人 免费观看网站 | 中文亚洲成a人片在线观看 | 亚洲国产精华液网站w | 中文字幕无码av激情不卡 | 乌克兰少妇xxxx做受 | 国产精品久久久久久久9999 | 午夜精品久久久久久久 | 动漫av一区二区在线观看 | 亚洲国产精品美女久久久久 | 熟女少妇人妻中文字幕 | 人妻少妇被猛烈进入中文字幕 | 国产精品香蕉在线观看 | 夫妻免费无码v看片 | 久久国产自偷自偷免费一区调 | 中文字幕无码av波多野吉衣 | 久久精品国产一区二区三区肥胖 | 亚洲 a v无 码免 费 成 人 a v | 久精品国产欧美亚洲色aⅴ大片 | 国产卡一卡二卡三 | 国产精品爱久久久久久久 | 国产在热线精品视频 | 51国偷自产一区二区三区 | 在线精品亚洲一区二区 | 亚洲 欧美 激情 小说 另类 | 婷婷综合久久中文字幕蜜桃三电影 | 奇米影视7777久久精品人人爽 | 97夜夜澡人人爽人人喊中国片 | 亚洲一区二区三区 | 成人精品视频一区二区三区尤物 | 欧洲熟妇色 欧美 | 老子影院午夜精品无码 | 大乳丰满人妻中文字幕日本 | 久久精品中文字幕一区 | 精品国偷自产在线 | 蜜臀aⅴ国产精品久久久国产老师 | 高中生自慰www网站 | 我要看www免费看插插视频 | 无码播放一区二区三区 | 真人与拘做受免费视频 | 波多野结衣乳巨码无在线观看 | 大地资源中文第3页 | 亚洲人亚洲人成电影网站色 | 人妻aⅴ无码一区二区三区 | 国产精品二区一区二区aⅴ污介绍 | 国产av久久久久精东av | 曰韩少妇内射免费播放 | 久久99热只有频精品8 | 久久久久99精品成人片 | 国产熟女一区二区三区四区五区 | 国产精品无码一区二区桃花视频 | 日日麻批免费40分钟无码 | 成人一在线视频日韩国产 | 欧美熟妇另类久久久久久不卡 | 欧美freesex黑人又粗又大 | 性欧美大战久久久久久久 | 97久久超碰中文字幕 | 啦啦啦www在线观看免费视频 | 亚洲熟妇自偷自拍另类 | 国产又粗又硬又大爽黄老大爷视 | 波多野结衣aⅴ在线 | 久久久久亚洲精品中文字幕 | 欧美人与牲动交xxxx | 久久精品女人的天堂av | 无遮挡国产高潮视频免费观看 | 亚洲人交乣女bbw | 亚洲中文字幕久久无码 | 日本高清一区免费中文视频 | 精品国产一区二区三区四区在线看 | 亚洲精品一区二区三区在线 | 特大黑人娇小亚洲女 | 99视频精品全部免费免费观看 | 亚洲欧美日韩成人高清在线一区 | 亚洲精品国产品国语在线观看 | 成人无码视频在线观看网站 | 日韩av无码一区二区三区不卡 | 亚洲男人av天堂午夜在 | 成人无码视频在线观看网站 | 波多野结衣av一区二区全免费观看 | 免费乱码人妻系列无码专区 | 国产成人人人97超碰超爽8 | av无码不卡在线观看免费 | 亚洲欧美精品aaaaaa片 | 亚洲中文字幕在线无码一区二区 | 一本色道久久综合亚洲精品不卡 | 99久久婷婷国产综合精品青草免费 | 无码成人精品区在线观看 | 最近的中文字幕在线看视频 | 国产一区二区三区精品视频 | 欧美三级a做爰在线观看 | 2020最新国产自产精品 | 国产成人精品视频ⅴa片软件竹菊 | 特黄特色大片免费播放器图片 | 扒开双腿吃奶呻吟做受视频 | 欧美阿v高清资源不卡在线播放 | 天干天干啦夜天干天2017 | 亚欧洲精品在线视频免费观看 | 亚洲精品国产第一综合99久久 | 国产偷国产偷精品高清尤物 | 国产亚洲美女精品久久久2020 | 国产成人无码区免费内射一片色欲 | 四虎国产精品免费久久 | 欧美自拍另类欧美综合图片区 | 久久精品中文闷骚内射 | 亚洲第一无码av无码专区 | 日韩av无码一区二区三区 | 人人爽人人澡人人高潮 | 国产乱人偷精品人妻a片 | 亚洲乱码国产乱码精品精 | 人妻无码久久精品人妻 | 精品久久久久久人妻无码中文字幕 | 亚洲成色在线综合网站 |