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

如何在 Python 中應(yīng)用設(shè)計原則

開發(fā) 后端
什么是好用的代碼呢?其實就是代碼質(zhì)量比較高,如何評價代碼質(zhì)量的高低呢?最常用的、最重要的評價標(biāo)準(zhǔn),就是代碼的可維護性、可讀性、可擴展性、靈活性、簡潔性、可復(fù)用性、可測試性。

[[408977]]

寫出能用的代碼很簡單,寫出好用的代碼很難。

什么是好用的代碼呢?其實就是代碼質(zhì)量比較高,如何評價代碼質(zhì)量的高低呢?最常用的、最重要的評價標(biāo)準(zhǔn),就是代碼的可維護性、可讀性、可擴展性、靈活性、簡潔性、可復(fù)用性、可測試性。

好用的代碼,也都會遵循一此原則,這就是設(shè)計原則,它們分別是:

  • 單一職責(zé)原則 (SRP)
  • 開閉原則 (OCP)
  • 里氏替換原則 (LSP)
  • 接口隔離原則 (ISP)
  • 依賴倒置原則 (DIP)

提取這五種原則的首字母縮寫詞,就是 SOLID 原則。下面分別進行介紹,并展示如何在 Python 中應(yīng)用。

1、單一職責(zé)原則 SRP

單一職責(zé)原則(Single Responsibility Principle)這個原則的英文描述是這樣的:A class or module should have a single responsibility。如果我們把它翻譯成中文,那就是:一個類或者模塊只負(fù)責(zé)完成一個職責(zé)(或者功能)。

讓我們舉一個更簡單的例子,我們有一個數(shù)字 L = [n1, n2, …, nx] 的列表,我們計算一些數(shù)學(xué)函數(shù)。例如,計算最大值、平均值等。

一個不好的方法是讓一個函數(shù)來完成所有的工作:

  1. import numpy as np 
  2.  
  3. def math_operations(list_): 
  4.     # Compute Average 
  5.     print(f"the mean is {np.mean(list_)}"
  6.     # Compute Max 
  7.     print(f"the max is {np.max(list_)}")  
  8.  
  9. math_operations(list_ = [1,2,3,4,5]) 
  10. # the mean is 3.0 
  11. # the max is 5 

實際開發(fā)中,你可以認(rèn)為 math_operations 很龐大,揉雜了各種功能代碼。

為了使這個更符合單一職責(zé)原則,我們應(yīng)該做的第一件事是將函數(shù) math_operations 拆分為更細(xì)粒度的函數(shù),一個函數(shù)只干一件事:

  1. def get_mean(list_): 
  2.     '''Compute Max''' 
  3.     print(f"the mean is {np.mean(list_)}")  
  4.  
  5. def get_max(list_): 
  6.     '''Compute Max''' 
  7.     print(f"the max is {np.max(list_)}")  
  8.  
  9. def main(list_):  
  10.     # Compute Average 
  11.     get_mean(list_) 
  12.     # Compute Max 
  13.     get_max(list_) 
  14.  
  15. main([1,2,3,4,5]) 
  16. # the mean is 3.0 
  17. # the max is 5 

這樣做的好處就是:

  • 易讀易調(diào)試,更容易定位錯誤。
  • 可復(fù)用,代碼的任何部分都可以在代碼的其他部分中重用。
  • 可測試,為代碼的每個功能創(chuàng)建測試更容易。

但是要增加新功能,比如計算中位數(shù),main 函數(shù)還是很難維護,因此還需要第二個原則:OCP。

2、開閉原則 OCP

開閉原則(Open Closed Principle)就是對擴展開放,對修改關(guān)閉,這可以大大提升代碼的可維護性,也就是說要增加新功能時只需要添加新的代碼,不修改原有的代碼,這樣做即簡單,也不會影響之前的單元測試,不容易出錯,即使出錯也只需要檢查新添加的代碼。

上述代碼,可以通過將我們編寫的所有函數(shù)變成一個類的子類來解決這個問題。代碼如下:

  1. import numpy as np 
  2. from abc import ABC, abstractmethod 
  3.  
  4. class Operations(ABC): 
  5.     '''Operations''' 
  6.     @abstractmethod 
  7.     def operation(): 
  8.         pass 
  9.  
  10. class Mean(Operations): 
  11.     '''Compute Max''' 
  12.     def operation(list_): 
  13.         print(f"The mean is {np.mean(list_)}")  
  14.  
  15. class Max(Operations): 
  16.     '''Compute Max''' 
  17.     def operation(list_): 
  18.         print(f"The max is {np.max(list_)}")  
  19.  
  20. class Main: 
  21.     '''Main''' 
  22.     def get_operations(list_): 
  23.         # __subclasses__ will found all classes inheriting from Operations 
  24.         for operation in Operations.__subclasses__(): 
  25.             operation.operation(list_) 
  26.  
  27.  
  28. if __name__ == "__main__"
  29.     Main.get_operations([1,2,3,4,5]) 
  30. # The mean is 3.0 
  31. # The max is 5 

如果現(xiàn)在我們想添加一個新的操作,例如:median,我們只需要添加一個繼承自 Operations 類的 Median 類。新形成的子類將立即被 __subclasses__()接收,無需對代碼的任何其他部分進行修改。

3、里氏替換原則 (LSP)

里式替換原則的英文是 Liskov Substitution Principle,縮寫為 LSP。這個原則最早是在 1986 年由 Barbara Liskov 提出,他是這么描述這條原則的:

If S is a subtype of T, then objects of type T may be replaced with objects of type S, without breaking the program。

也就是說 子類對象能夠替換程序中父類對象出現(xiàn)的任何地方,并且保證原來程序的邏輯行為不變及正確性不被破壞。

實際上,里式替換原則還有另外一個更加能落地、更有指導(dǎo)意義的描述,那就是按照協(xié)議來設(shè)計,子類在設(shè)計的時候,要遵守父類的行為約定(或者叫協(xié)議)。父類定義了函數(shù)的行為約定,那子類可以改變函數(shù)的內(nèi)部實現(xiàn)邏輯,但不能改變函數(shù)原有的行為約定。這里的行為約定包括:函數(shù)聲明要實現(xiàn)的功能;對輸入、輸出、異常的約定;甚至包括注釋中所羅列的任何特殊說明。

4、接口隔離原則 (ISP)

接口隔離原則的英文翻譯是 Interface Segregation Principle,縮寫為 ISP。Robert Martin 在 SOLID 原則中是這樣定義它的:Clients should not be forced to depend upon interfaces that they do not use。

直譯成中文的話就是:客戶端不應(yīng)該被強迫依賴它不需要的接口。其中的 客戶端 ,可以理解為接口的調(diào)用者或者使用者。

舉個例子:

  1. from abc import ABC, abstractmethod 
  2. class Mammals(ABC): 
  3.  
  4.     @abstractmethod 
  5.     def swim(self) -> bool: 
  6.         pass 
  7.  
  8.     @abstractmethod 
  9.     def walk(self) -> bool: 
  10.         pass 
  11.  
  12.  
  13. class Human(Mammals): 
  14.     def swim(self)-> bool: 
  15.         print("Humans can swim"
  16.         return True 
  17.  
  18.     def walk(self)-> bool: 
  19.         print("Humans can walk"
  20.         return True 
  21.  
  22.  
  23. class Whale(Mammals): 
  24.  
  25.     def walk(self) -> bool: 
  26.         print("Whales can't walk"
  27.         return False 
  28.  
  29.     def swim(self): 
  30.         print("Whales can swim"
  31.         return True 
  32.  
  33.  
  34. human = Human() 
  35. human.swim() 
  36. human.walk() 
  37. whale = Whale() 
  38. whale.swim() 
  39. whale.walk() 

執(zhí)行結(jié)果:

  1. Humans can swim 
  2. Humans can walk 
  3. Whales can swim 
  4. Whales can't walk 

事實上,子類鯨魚不應(yīng)該依賴它不需要的接口 walk,針對這種情況,就需要對接口進行拆分,代碼如下:

  1. from abc import ABC, abstractmethod 
  2.  
  3. class Swimer(ABC): 
  4.  
  5.     @abstractmethod 
  6.     def swim(self) -> bool: 
  7.         pass 
  8.  
  9. class Walker(ABC): 
  10.     @abstractmethod 
  11.     def walk(self) -> bool: 
  12.         pass 
  13.  
  14.  
  15. class Human(Swimer,Walker): 
  16.     def swim(self)-> bool: 
  17.         print("Humans can swim"
  18.         return True 
  19.  
  20.     def walk(self)-> bool: 
  21.         print("Humans can walk"
  22.         return True 
  23.  
  24.  
  25. class Whale(Swimer): 
  26.  
  27.     def swim(self): 
  28.         print("Whales can swim"
  29.         return True 
  30.  
  31.  
  32. human = Human() 
  33. human.swim() 
  34. human.walk() 
  35. whale = Whale() 
  36. whale.swim() 

5、依賴反轉(zhuǎn)原則 (DIP)

依賴反轉(zhuǎn)原則的英文翻譯是 Dependency Inversion Principle,縮寫為 DIP。英文描述:High-level modules shouldn’t depend on low-level modules. Both modules should depend on abstractions. In addition, abstractions shouldn’t depend on details. Details depend on abstractions。

我們將它翻譯成中文,大概意思就是:高層模塊不要依賴低層模塊。高層模塊和低層模塊應(yīng)該通過抽象(abstractions)來互相依賴。除此之外,抽象不要依賴具體實現(xiàn)細(xì)節(jié),具體實現(xiàn)細(xì)節(jié)依賴抽象。

在調(diào)用鏈上,調(diào)用者屬于高層,被調(diào)用者屬于低層,我們寫的代碼都屬于低層,由框架來調(diào)用。在平時的業(yè)務(wù)代碼開發(fā)中,高層模塊依賴低層模塊是沒有任何問題的,但是在框架層面設(shè)計的時候,就要考慮通用性,高層應(yīng)該依賴抽象的接口,低層應(yīng)該實現(xiàn)對應(yīng)的接口。如下圖所示:

也就是說本來 ObjectA 依賴 ObjectB,但為了擴展后面可能會有 ObjectC,ObjectD,經(jīng)常變化,因此為了頻繁改動,讓高層模塊依賴抽象的接口 interface,然后讓 ObjectB 也反過來依賴 interface,這就是依賴反轉(zhuǎn)原則。

舉個例子,wsgi 協(xié)議就是一種抽象接口,高層模塊有 uWSGI,gunicorn等,低層模塊有 Django,F(xiàn)lask 等,uWSGI,gunicorn 并不直接依賴 Django,F(xiàn)lask,而是通過 wsgi 協(xié)議進行互相依賴。

依賴倒置原則概念是高層次模塊不依賴于低層次模塊。看似在要求高層次模塊,實際上是在規(guī)范低層次模塊的設(shè)計。低層次模塊提供的接口要足夠的抽象、通用,在設(shè)計時需要考慮高層次模塊的使用種類和場景。明明是高層次模塊要使用低層次模塊,對低層次模塊有依賴性。現(xiàn)在反而低層次模塊需要根據(jù)高層次模塊來設(shè)計,出現(xiàn)了「倒置」的顯現(xiàn)。

這樣設(shè)計好處有兩點:

  • 低層次模塊更加通用,適用性更廣
  • 高層次模塊沒有依賴低層次模塊的具體實現(xiàn),方便低層次模塊的替換

最后的話

我去年(2020)年 2 月 3 號購買的《設(shè)計模式之美》專欄,將近一年半才把它學(xué)習(xí)完,再回看之前的代碼,真是一堆垃圾。之前一天寫完的代碼,重構(gòu)差不多花了一個星期,重構(gòu)之后,感覺還可以再重構(gòu)的更好,似乎無止境,正如小爭哥說的那樣,項目無論大小,都可以有技術(shù)含量,所謂代碼細(xì)節(jié)是魔鬼,細(xì)節(jié)到處都存在在取舍,應(yīng)該怎么樣,不應(yīng)該怎么樣,都大有學(xué)問。

本文轉(zhuǎn)載自微信公眾號「Python七號」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系Python七號公眾號。

 

責(zé)任編輯:武曉燕 來源: Python七號
相關(guān)推薦

2022-07-15 09:01:15

React對象編程

2020-03-31 21:50:41

JavaScript前端技術(shù)

2014-04-23 13:13:59

OpenShift

2009-06-02 10:02:50

eclipse jboeclipse jbojboss for e

2023-03-17 06:14:20

2021-01-30 17:57:23

Python緩存開發(fā)

2023-03-17 07:13:43

2024-09-04 01:30:14

2022-05-31 08:49:02

Flutter應(yīng)用程序前端

2021-07-09 12:37:31

GoPython編程語言

2022-06-22 09:56:19

PythonMySQL數(shù)據(jù)庫

2011-08-22 16:26:25

IOS開發(fā)Sqlite數(shù)據(jù)庫

2015-08-03 16:01:49

Ubuntu應(yīng)用

2022-09-13 08:32:43

Ubuntu

2012-08-21 09:42:24

設(shè)計架構(gòu)設(shè)計原則

2024-09-30 11:51:07

2010-02-03 09:45:34

Python目標(biāo)

2025-06-03 08:05:00

設(shè)計原則開發(fā)代碼

2009-07-28 08:39:56

Linux應(yīng)用軟件Linux應(yīng)用

2013-05-22 09:59:10

HTML 5音頻
點贊
收藏

51CTO技術(shù)棧公眾號

秋霞影院午夜丰满少妇在线视频| 中文字幕国产专区| 免费影视亚洲| 97久久精品人人做人人爽| 日韩免费av在线| 国产精品麻豆一区| 亚洲网址在线观看| 欧美综合亚洲图片综合区| 中文字幕中文字幕99 | 国内精品美女在线观看| 日韩av网站大全| 黄色高清无遮挡| 亚洲欧美成人影院| 久久久www成人免费毛片麻豆 | 欧美成人高潮一二区在线看| 久久精品蜜桃| 国产91丝袜在线播放0| 国产成人福利视频| 久久精品一区二区三| 久久av超碰| 欧美成人三级在线| 久久婷五月综合| 欧产日产国产精品视频| 亚洲女同女同女同女同女同69| 欧美国产一二三区| 亚洲成熟女性毛茸茸| 日本美女一区二区| 91精品国产99| 激情五月婷婷在线| 欧美成人直播| 亚洲欧美日韩成人| 亚洲av永久无码精品| 91丨精品丨国产| 欧美视频在线一区二区三区| 无码人妻丰满熟妇区96| www在线视频| 国产精品日产欧美久久久久| 蜜桃麻豆91| 黄频网站在线观看| 国产伦理精品不卡| 成人午夜两性视频| 中文区中文字幕免费看| 亚洲欧美日韩国产一区| 久久久人成影片一区二区三区观看| 国产一二三av| 夜夜春成人影院| 日韩高清av一区二区三区| 日本少妇xxxx软件| 99re6热只有精品免费观看| 91精品国产综合久久久蜜臀图片| 欧美黄色性生活| 日韩精品99| 色噜噜狠狠成人网p站| 国产欧美高清在线| 欧美巨大丰满猛性社交| 五月天精品一区二区三区| 亚洲色欲久久久综合网东京热| av网站免费在线观看| 亚洲手机成人高清视频| 艳母动漫在线观看| 八戒八戒神马在线电影| 亚洲男人电影天堂| 中文字幕人妻熟女人妻洋洋| 污污片在线免费视频| 一区二区三区久久久| 日韩免费在线观看av| 国产亚av手机在线观看| 午夜电影网一区| 国产午夜福利视频在线观看| 欧美片第1页| 欧美日韩精品一区视频| 色婷婷激情视频| 日本在线成人| 亚洲精品理论电影| 欧美大波大乳巨大乳| 欧美在线电影| 久久影视免费观看| 久久久久久久福利| 国产欧美不卡| 国产精品黄色av| 国产精品无码在线播放| 国产69精品久久99不卡| 快播亚洲色图| av在线免费一区| 亚洲精品菠萝久久久久久久| 日本a视频在线观看| 亚洲承认视频| 51精品国自产在线| 性久久久久久久久久久| 欧美日韩在线二区| 欧美寡妇偷汉性猛交| 日本韩国欧美中文字幕| 理论电影国产精品| 97se视频在线观看| 欧美理论在线观看| 亚洲欧洲一区二区在线播放| a级黄色片免费| 蜜桃av.网站在线观看| 欧美三级视频在线| 国产精品成人免费一区久久羞羞| 亚洲a级精品| 久久久国产精品视频| 日韩成人免费在线视频| 美腿丝袜一区二区三区| 国产伦精品一区二区三毛| av在线电影院| 亚洲高清免费视频| 免费av不卡在线| 最新亚洲精品| 欧美激情视频一区二区三区不卡| 一级成人黄色片| 国产一区激情在线| 青娱乐一区二区| 国产91足控脚交在线观看| 欧美三级电影网站| 成人手机在线免费视频| 91tv官网精品成人亚洲| 情事1991在线| 深夜福利视频网站| 一二三四社区欧美黄| 性欧美videossex精品| 欧美亚洲tv| 久久6精品影院| 91无套直看片红桃| 中文久久乱码一区二区| 欧美精品一区免费| 白白在线精品| 美女福利精品视频| 少妇精品久久久一区二区| 色嗨嗨av一区二区三区| 美女伦理水蜜桃4| 888久久久| 国产精品久久久久久久久粉嫩av| 日韩一区二区三区不卡| 综合在线观看色| 九色porny91| 欧洲vs亚洲vs国产| 国产69精品99久久久久久宅男| 97超碰国产在线| 久久精品免视看| 黄色片一级视频| 日韩免费电影在线观看| 国外成人在线直播| www夜片内射视频日韩精品成人| 国产精品亲子乱子伦xxxx裸| 色婷婷综合久久久久中文字幕| 成人在线日韩| 最近2019中文字幕第三页视频 | 在线观看免费视频黄| 欧美在线亚洲| 999热视频| 青青在线视频| 欧美成人bangbros| 日韩精品视频免费看| 成人av在线看| 国产成人在线免费看| 日韩aaa久久蜜桃av| 91chinesevideo永久地址| 午夜18视频在线观看| 亚洲成人动漫在线观看| 日本一区二区在线免费观看| 99成人免费视频| 久久久综合亚洲91久久98| 色戒汤唯在线观看| 亚洲欧洲一区二区三区久久| 日韩免费av网站| 中文字幕乱码久久午夜不卡| 在线观看免费不卡av| 亚洲在线久久| 成人片在线免费看| 亚洲一级少妇| 揄拍成人国产精品视频| 国产又粗又猛又爽又黄的| 亚洲视频图片小说| 欧美久久久久久久久久久| 亚洲精品社区| 欧美日韩一区二区三| 成人福利片在线| 美女性感视频久久久| 欧美视频在线观看一区二区三区| 欧美日韩国产中文字幕| www..com.cn蕾丝视频在线观看免费版| 青青草精品视频| 影音先锋成人资源网站| 日本午夜精品| 国产日本欧美视频| av中文在线资源| 一本大道亚洲视频| www.黄色一片| 色综合天天视频在线观看 | 亚洲制服丝袜在线| 极品粉嫩小仙女高潮喷水久久| 日韩综合小视频| 妞干网这里只有精品| 三级精品视频| 成人免费淫片视频软件| 亚洲最大网站| 久久福利网址导航| 久草视频在线看| 日韩免费看网站| 日本中文字幕在线观看视频| 依依成人精品视频| av在线播放中文字幕| 北岛玲一区二区三区四区| 欧美第一页浮力影院| 在线成人h网| 亚洲一区二区三区在线观看视频| 国产精品99久久免费观看| 国产精品视频yy9099| 国产理论在线| 久久成人在线视频| 第三区美女视频在线| 亚洲国产一区自拍| aa视频在线免费观看| 欧美在线一区二区| 国产精品美女久久久久av爽| 亚洲九九爱视频| 免费看日本黄色片| 91视视频在线观看入口直接观看www | 制服丝袜亚洲网站| 波多野结衣黄色| 五月激情综合色| 91porn在线视频| 国产精品毛片久久久久久| 大黑人交xxx极品hd| 成人天堂资源www在线| 国产5g成人5g天天爽| 日韩av一区二区在线影视| 动漫av网站免费观看| 欧美日韩国产欧| 一级黄色免费在线观看| 欧美日韩一二| 手机在线观看国产精品| 国产欧美日韩精品一区二区免费 | 51自拍视频在线观看| 免费成人在线网站| 久草综合在线观看| 国产精品视频| 免费看国产一级片| 禁久久精品乱码| 9色porny| 精品1区2区3区4区| 2018国产在线| 亚洲精品黄色| 国产黄页在线观看| 国产日韩欧美在线播放不卡| 成人一区二区免费视频| 亚洲九九精品| 亚洲 欧美 日韩 国产综合 在线 | 国产黄色高清视频| 日韩一区二区三区视频在线| 精品国产av鲁一鲁一区| 日韩欧美亚洲国产精品字幕久久久 | 一区在线观看| 久久黄色片视频| 亚洲影音先锋| 激情婷婷综合网| 蜜臀av一区二区| 国产精品探花在线播放| 国产精品乡下勾搭老头1| 伊人影院在线观看视频| 成人午夜免费av| 精品一区二区视频在线观看| 久久综合九色综合久久久精品综合| 在线观看日韩精品视频| 久久精品亚洲乱码伦伦中文| 国产性猛交xx乱| 亚洲欧美综合色| 久草福利资源在线观看| 天天色 色综合| 综合网在线观看| 欧美系列在线观看| 99热这里只有精品1| 精品国产伦一区二区三区观看方式 | 国产一区二区三区高清播放| 日批视频免费看| 26uuu久久天堂性欧美| 久久久久久成人网| 亚洲激情一二三区| 毛片视频网站在线观看| 欧美伊人精品成人久久综合97 | 毛片a片免费观看| 婷婷综合五月天| 亚洲图片中文字幕| 亚洲第一色中文字幕| 国产三级在线免费| 九九热这里只有精品6| 成人亚洲欧美| 亚洲在线第一页| 妖精视频一区二区三区免费观看 | 播金莲一级淫片aaaaaaa| 亚洲欧洲99久久| 欧美日韩综合在线观看| 777奇米成人网| 五月婷婷久久久| 播播国产欧美激情| 另类图片综合电影| 999日本视频| 精品日韩在线| 老太脱裤子让老头玩xxxxx| 蜜臀av性久久久久蜜臀aⅴ| 韩国三级hd两男一女| 国产精品日产欧美久久久久| 波多野结衣国产| 日韩欧美成人一区| 天天影视久久综合| 欧美一级黄色网| 亚洲精品在线a| 亚洲精品成人a8198a| av成人黄色| 久久久久久久穴| 亚洲色图欧洲色图| a片在线免费观看| 亚洲电影中文字幕| 在线网址91| 国产精品偷伦视频免费观看国产 | 福利精品在线| 久久综合给合久久狠狠色| 欧美久久九九| 国产精品自在自线| 国产色产综合产在线视频| 日本少妇吞精囗交| 日韩女优制服丝袜电影| 免费在线观看av| 国产成人精品在线观看| 色婷婷久久久| av在线播放亚洲| 国产91精品免费| 青娱乐国产在线视频| 7777女厕盗摄久久久| 天堂中文8资源在线8| 国产精品久久在线观看| 国产伦精品一区二区三区视频| 青娱乐自拍偷拍| 成人一道本在线| 久草成人在线视频| 精品久久一区二区三区| 中文字幕有码在线观看| 亚洲va电影大全| 91精品久久久久久久久久不卡| 亚洲图色中文字幕| 中文字幕一区二区三区蜜月 | 美女视频一区二区| 日本黄区免费视频观看| 欧美亚男人的天堂| 又爽又大又黄a级毛片在线视频| 国产精品福利无圣光在线一区| 国产日韩视频在线| 杨幂毛片午夜性生毛片| 国产亚洲人成网站| 国产一级片免费视频| 国产一区二区三区在线观看网站| 成人做爰视频www网站小优视频| 久久综合九九| 日韩av网站免费在线| 永久免费av无码网站性色av| 欧美主播一区二区三区| 91精品专区| 成人在线精品视频| 欧美日韩天堂| 中文字幕三级电影| 一本久久a久久精品亚洲| yw193.com尤物在线| 成人精品一区二区三区| 欧美涩涩网站| 91视频啊啊啊| 欧美视频自拍偷拍| 综合久久2o19| 精品视频在线观看| 亚洲综合国产| 免费成人深夜天涯网站| 欧美嫩在线观看| 青春草免费在线视频| 精品麻豆av| 另类调教123区 | 成年人的黄色片| 在线看日本不卡| 久草中文在线| 国产尤物91| 日韩高清一区二区| 国产免费无码一区二区视频| 亚洲精品99久久久久中文字幕| 国产亚洲一区二区手机在线观看 | 久久精品人人| 中文乱码字幕高清一区二区| 欧美成人video| 成人免费av电影| 粉嫩av一区二区三区天美传媒| 99精品久久99久久久久| 国产精品成人久久久| 九九热精品在线| 精品少妇av| 性农村xxxxx小树林| 在线观看国产一区二区| 青青在线视频| 一区二区在线高清视频| 99久久精品免费观看| 97在线播放免费观看| 国产91精品黑色丝袜高跟鞋| 91精品99|