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

用戶需求+設計原則+正確應用=設計方案

開發 架構
上回的最后,來了兩個用戶,分別提出了兩個不同的需求。一個要求用兩個開關控制一個燈,一個要求用一個開關控制所有的燈。本回將就這兩個需求進行分析。我寫這段話的時候并沒有想出這個需求的具體方案,重要的過程,思路有時候比結果更重要。所以,我的方案可能會"跑偏";但是如果你能從過程中體會到些什么,那這篇就沒有白寫。

上回的最后,來了兩個用戶,分別提出了兩個不同的需求。一個要求用兩個開關控制一個燈,一個要求用一個開關控制所有的燈。本回將就這兩個需求進行分析。我寫這段話的時候并沒有想出這個需求的具體方案,重要的過程,思路有時候比結果更重要。所以,我的方案可能會"跑偏";但是如果你能從過程中體會到些什么,那這篇就沒有白寫。

兩個開關控制一個燈。這個問題好像很簡單,把兩個Switcher的Switchee都設置為同一個燈不就結了嗎?畫個對象圖會是這個樣子。

 clip_image002
圖1 由雙開關控制的燈

有問題嗎?

用戶的真實需求

考慮一下這個問題。如果你用Switcher1開了燈,再去開一下Switcher2,燈應該是保持開著還是關了呢?從技術人員的角度來講,調用的Switcher的開,當然應該保持開啦。但是策劃會說,這兩個開關應該是相互作用的,還拿出了電路圖給我看。這是的確是張真實情況下的雙開關電路圖。

 
圖2 雙路開關電路

Switcher1的開關,撥到左邊是開還是關,取決于Switcher2現在是撥在左邊兒還是右邊。電路圖的天然連通性就自然而然地做到了這一點。現實中的Switcher1不會去問Switcher2:嘿,哥們,你現在是個啥狀態?而我們的代碼中的兩個Switcher間也不應該有什么交集。

總而言之,在這個需求的要求下,用戶要做的,就是撥一下開關而已(圖3中JustSwitch方法的作用)。

對當前設計的改進

在以上需求的約束下,就第一篇開始所寫的Switcher而言,就會存在著一個問題。先不說雙開關,單單一個開關我們的設計就是不符合產品策劃的要求。因為之前寫的Switcher類是有兩個函數作開關控制的。

  1. public class Switcher   
  2.  
  3. {   
  4.  
  5.     public ISwitchable Switchee { get; set; }   
  6.  
  7.     public void TurnOn() { Switchee.TurnOn(); }   
  8.  
  9.     public void TurnOff() { Switchee.TurnOff(); }   
  10.  
  11. }   

代碼1

這是有問題的。因為Switcher是直接給用戶用的。你覺得用戶是想用哪種開關呢?

還是 呢?

總不能讓用戶根據現在燈是開著還是關著讓用戶按不同的按鈕。(使用不同的函數。)所以Switcher的代碼應該是這個樣子的。

  1. public class Switcher   
  2. {   
  3.     private bool isOn;   
  4.     public ISwitchable Switchee { get; set; }   
  5.  
  6.   public void JustSwitch()   
  7.   {   
  8.     // 根據當前狀態選擇正確的操作。   
  9.     if (isOn)   
  10.     {   
  11.         Switchee.TurnOff();   
  12.         isOn = false;   
  13.     }   
  14.     else   
  15.     {   
  16.         Switchee.TurnOn();   
  17.         isOn = true;   
  18.     }   
  19.   }   
  20. }  

代碼2

Switcher自己保存最后一次操作的結果(當前狀態),并自動選擇正確的操作。

支持雙開關

當每個燈只有一個開關的時候,這個代碼沒有任何問題。但是出現兩個開關的話就沒這么好辦了,自己保存的狀態是無效的,可能會被另一個開關改掉。如果要達到和電路圖一樣的效果,Switcher1要么問Switcher2現在是什么狀態,要么問Light是什么狀態。

直覺上,問Switcher2這事兒不是個好選擇,因為以后還可能會有Switcher3、4。但燈就一個。但是等等,我們現在的接口是什么樣的?

 clip_image002[6]
圖3. 現在的設計

ISwitchable接口只定義了TurnOn和TurnOff兩個函數,沒有可以用于查詢燈的當前狀態的方法。這太糟糕了,這意味著接口要改了。改接口永遠是最糟糕的事情。《軟件框架設計的藝術》里說"API就如同恒星,一旦出現,便與我們永恒存在。",聽上去接口寫了就不能改,但是我們的情況要好很多,這個接口是公司自己定義的,沒有別人用過。所以改改無妨。J只要小小的加一個方法就可以了。

clip_image002[8] 
圖4. 添加查詢接口以支持雙開關

Switcher的代碼會是這樣的。Switcher暴露給用戶的應該只有 一個接口。

  1. public interface ISwitchable   
  2. {   
  3.     void TurnOn();   
  4.     void TurnOff();   
  5.     bool IsOn();   
  6. }  
  7.    
  8. public class Switcher   
  9. {   
  10.     public ISwitchable Switchee { get; set; }   
  11.  
  12.     public void JustSwitch()   
  13.     {   
  14.         // 根據當前狀態選擇正確的操作。   
  15.         if (Switchee.IsOn())   
  16.             Switchee.TurnOff();   
  17.         else   
  18.             Switchee.TurnOn();   
  19.     }   
  20. }  

代碼3

#p#

另一個極品方案

軟件開發與建筑施工的最大區別是,軟件開發可以選擇先蓋地下室還是天花板。

——我

當我們把要做的事情抽象一下,就能很容易地從更高的層次思考問題。比如上面,開關要知道燈的狀態。可以抽象為:

 
圖5. 開關開燈例子的高度抽象

各位可以想到什么設計上的問題?比較明顯的問題有兩個。

  • 拉模式 VS推模式。既然圖中為拉模式,那么另一個思路就是推模式。也許你聽說一個說法,就是推模式比拉模式要好。但是如果真把推模式用在開關開燈的例子上,就成了燈的亮與熄,要去通知開關,以便開關下次Switch的時候,能做出正確地動作。想到這里,我邪惡地笑了。這得多蛋痛啊?模式的應用,永遠要看上下文。為了撫慰一些推模式死忠們脆弱的心靈,下面會介紹一個可行的推模式開燈設計。
  • A 依賴B。雖然我們有ISwitchable接口,開關不直接依賴燈,但是你看,我們為什么要在ISwitchable接口里加入IsOn函數呢?因為開關需要知道燈的狀態。所以說,他們之間不但存在著依賴,而且還直接決定了接口的定義。但是與我第一篇文章中介紹的DIP原則是否沖突呢?這取決于你對開關的定位。如果只是單純的開關,那么IsOn函數的引入,就是對燈的功能的抽象,也就違反了DIP原則;如果你希望開關有點兒AI,那么顯然它得知道更多的信息(但是這違反了單一責任原則)。所以看上去,無論從哪個角度來講,IsOn的引入都是要違反XXXX原則的。

好,為了不違反所有現有的原則。構想出設計出如下的設計:

 clip_image002[10]
圖6. 引入AI系統對開關操作進行決策(拉模式)

理智一些吧,我們的開關公司沒有上市,既沒有資本做AI系統,也沒有卡馬克這種不要錢只要漢堡和網絡的技術狂人,我們的用戶也不會像暗黑的死忠一樣傻等 10年,然后等到一個需要接網線才能使用的電燈開關還能用得很愉悅。在這個發展階段要做的,只是盡快滿足當前的需求。

在達成需求前,技術方案的完美度,永遠是第二位的。第一位的,是有效率地執行 + 新穎的思路和方向。思路放后面,是因為對99.9%的情況來說,最不值錢的就是點子,你能想到的,別人可能都已經做出來了。即使是Jobs這種用新意折服世界的人,也要靠"現實扭曲力場"的幫助把自己的觀點有效地推行下去。

所以,這個方案雖然很不錯,但是我不愿意繼續討論了,因為這在現實中沒有意義,脫離現實的例子也就不再是好例子了。

我還想說一句,做項目和做人,都不能走極端。另一個極端是:以敏捷之名,無視一切編碼前的設計。我猜這在群人眼中,這個系列的文章沒有任何意義。

———————————————————牢騷的休止符—————————————————————

再一個方案

有人可能會說,讓燈自己控制自己的狀態,也可以解決問題。像下面這樣。

 clip_image002[12]
圖7 另一種解決方案

然后把Light類實現成這個樣子:(多酷啊,目前為止代碼量最少的方案)

  1. public class Light : ISwitchable   
  2. {   
  3.     private bool isGlowing;   
  4.     public void JustSwitch()   
  5.     {   
  6.         isGlowing = !isGlowing;   
  7.     }   
  8. }  

代碼 4

這個設計的確可行,但是哪個方案更好呢?這個問題就留給各位讀者吧。就拿幾個Principle逐個分析下應該就可以分析出個所以然來。(下一節有簡單提示)

設計思想(原則)及技術方案的濫用

每種設計都有他的思路和道理。你覺得不可理喻的設計可能恰恰是別人深思熟慮的結果,只是每個人的思路不一樣,結果自然也不相同。但是如果設計思路被某種設計思想占據了絕對主導的地位,就可能會出現設計上的偏差。

我把濫用大體上總結成如下三種:

  1. 單純的濫用。因為我會這么做,所以就順便這么做了。他們的理論基礎是:雖然現在沒有這要的需求,誰知道以后有沒有呢?我多做一點兒還不好?最典型的癥狀是,所有的類,都有相應的接口,全部使用Dependency Injection來實例化。這不是有病么?

    這會引出一個比較大的話題,就是怎樣的設計算是過度設計?這需要單獨寫一節來討論這個問題。就不在這里展開了。

  2. 程度上的濫用。圖7的設計,就體現了一個叫做"Tell, Don't Ask"的原則,或者說是為了將這個原則"發揮到極致"而形成的設計。而在這個原則之下寫出的代碼4又是如此簡潔和優美;以至于讓想出這個方案的人,很難主動拋棄這個方案。直到看到這個方案不能滿足的需求才肯承認問題。
  3. 適用范圍濫用。把某個原則或是技術方案當萬金油。只要能用得上,就一定要用上一用。導致一葉蔽目,不愿意尋求其它更加合適的技術方案(項目時間緊是個最常見的借口,一知道某個方案可行,就馬上付諸行動)。一時興起,畫了個漫畫

 
圖8. 因為熟悉或懶惰而舍近求遠

第一篇就說過,優秀的設計不是藉由幾個原則、模式就可以保證的。何況是某一個原則呢?物極必反。今天就不再啰嗦了。大家也都懂。設計過程中對某個特定的設計思想或是技術過于執著,往往會形成一個雖可行、卻畸形的設計。圖7即是一個例子。

#p#

一個真實的案例

有一家著名的咨詢公司,2009年接了一個銀行的大單,為期一年,預計可以賺到五個億。但是這個項目現在都還沒有結束,項目延期不僅要給銀行賠償,還要繼續免費給銀行把這個項目做完。(想想國內公司會怎么做?)2010-2011年度,公司接的其它項目賺的錢幾乎全部貼給了這個項目。當年全公司員工沒有獎金,部分相關高層降職降薪。

為什么?一個可以賺到五個億的項目卻虧了幾個億?

目前項目內員工的工作效率極低,一個普通開發者要兩天才能完成一個報表的修改。(現階段是修改,不是全新開發)。所以說人員成本非常大。項目拖上一個月,數百萬就打了水漂。

那么效率為什么這么低?他們所有的業務邏輯都用PL-SQL實現,大的報表,涉及到的PL-SQL動輒上萬行,而且層層調用,加之整個系統有數千個表。代碼的測試,都要先去數據庫造假數據。效率能高就怪了。

為什么要這么搞?因為一開始做系統設計的人,對PL-SQL比較熟悉,對Java不熟悉,所以就把Java當成了UI Wrapper來用。狗屎吧。當然還會有很多其它的因素,但是在技術層面,這絕對是重要因素之一。因為自己對某個技術比較熟悉,而不愿意在項目中了解和應用更適合的其它技術方案的人套上CTO之類的外衣,恒等于攪屎棍。

支持開關控制多個燈

簡單而言,要讓一個開關去控制所有的燈。聽上去很簡單,而且有很多種實現方式。但是如果仔細想想,會發現有很多問題。

需求分析,不同于簡單的需求整理

用戶給出的需求總會是很概括甚至模糊的,不是用戶懶得說,而是用戶覺得自己已經說清楚了。以開燈為例,用戶需求就是:"要有一個統一開關。",你如果再去追問用戶,要怎么個統一法?用戶可能就會不高興了,因為他覺得這是你應該解決的問題。但是如果簡單地把"要有統一開關"這個用戶需求直接寫進需求文檔的話,就等著項目失敗或是延期吧。

需求分析的第一步,就是要對用戶的需求進行分解、細節,找出合理用例。比如:用戶要求的是,要有統一開關,但是并沒有說每個燈就沒有自己的開關。如果每個燈又都有自己的開關,統一開關應該如何與各個專屬開關協作呢?從這個角度,就可以找到一些用例。

  1. 兩個燈,都開著。這時去按統一開關,應該是全關對吧。也就是說,統一開關應該知道當前燈的狀態。并按當前燈的狀態去執行操作。
  2. 三個燈,兩個開著。這時去按統一開關呢?統一開關的意思就是要有統一的行為,用戶肯定不會希望這個統一開關的行為是:把開著的燈關掉,把關著的燈打開。怎么辦?統計現在開著的比率?開著的多就全關?那如果是兩個燈,一個開著,一個關著呢?還有一個辦法是,讓統一開關使用代碼2的方案:自己記住上次的操作結果。上次是全關,這次就全開;反之亦然。

也就是說,用例1和用例2都是合理的,但卻是沖突的。這種沖突甚至是一種邏輯上的沖突,已經不是技術局限性的問題了。這種情況,在軟件開發中也是很常見的。這時,我們拿著自己的分析、自己的想法去詢問用戶的意見,用戶就會很樂意了。人們都喜歡做選擇題,而不是做問答題。不是么?

現實中的電路

現實中的電路圖有兩種做法。(非標準電路,請意會。強弱電相關專業也許可以參考這里

 clip_image002[14]clip_image002[16]
圖9. 現實中的兩種簡單的總控加分支開關電路

前一張圖,分支開關有絕對的控制權;后一張圖中開關中有一個二極管,開關的開合用于控制二極管的極性,總開關的作用就是:把開著的關掉,把關著的打開。

看上去就是兩種開關嘛。

基于派生類的方案

為了讓一個開關可以控制多個燈,對現有程序設計上的改動很小。類圖如下:

 clip_image002[18]
圖10. 多控開關設計

通過派生新的Switcher,來提供不同的功能。在當前的需求下,這個方案是可行的。未來的需求,就留給未來去解決吧。

小結

本節本來是想講講需求決定設計這個理念,從兩個需求引出兩個互不兼容的設計方案。所以找了兩個需求一起講,但是最后這兩個需求并沒多大的沖突,也就沒有達到預期的目標。不過想說的倒是說出來了。就是項目的設計,最終還是要依賴于需求,任何要做出能夠適應未來需求的設計的想法,都是不切實際、勞民傷財的。(不知道有多少人會把這句話曲解為"設計無用論",如果我認為設計無用,還會寫這個系列嗎?)

這個系列并不是要講設計模式,也不是用小例子做各種分析。只是想通過最簡單的例子講一些大道理(原則)。如果沒有合適的大道理可說,分析出一百個需求、做出一百個設計,也只是魚,而非我想說的漁。

距上節的發布也已經很久了,因為每回發表時,都會先想好下回寫什么、怎么寫,并結尾留個引子。這次很可惜,想好了下回寫什么,卻死活想不出合適的、簡單的需求來引出這個問題,也就不知道怎么寫了。所以下回什么能寫好我也不知道。大體上,也許還會有下而一些道理希望能和大家分享:

  • 過度設計及關于"過度"的度量。
  • 局部設計最優化與全局次優化之間的權衡。
  • 什么是設計經驗及如何正確地借鑒。

新的用戶

     下一回講哪個還沒有講好,但是用戶的需求卻如潮水般涌來。先權且記下:

  • 在開關上加一個小燈,表示現在的燈是開還是關。(因為開關和燈可能并不在一起)
  • 通過開關調節燈的亮度。
  • 在開關上顯示燈的耗電量、溫度、預期壽命等。
  • 定時開關。
  • 開關聲控、手勢控。
  • 開關權限控制。

原文鏈接:http://www.cnblogs.com/nankezhishi/archive/2012/08/18/2645562.html

責任編輯:林師授 來源: 博客園
相關推薦

2010-06-10 17:19:05

MySQL數據庫

2019-01-23 16:44:37

服務器應用限流

2009-12-07 14:38:14

PHP foreach

2010-05-28 15:16:40

MySQL 資源

2010-02-22 10:42:12

WCF Stream

2011-06-01 10:58:57

2010-05-25 18:01:35

linux MySQL

2010-02-22 14:09:08

WCF Dispose

2010-05-28 19:20:36

MySQL mysql

2022-09-20 14:37:43

ms級抽獎MySQL

2010-09-08 16:17:37

SIP協議棧

2012-07-11 10:49:34

鮑爾默Surface

2022-07-05 09:38:47

模型RBACABAC

2009-10-12 16:50:00

2009-10-19 13:50:57

布線設計方案

2011-04-21 15:20:37

iOS設計用戶界面iOS

2010-02-05 17:49:24

C++常量引用

2010-07-21 10:50:48

SQL Server存

2010-07-26 17:43:34

SQL Server

2010-03-04 09:40:52

Python Clas
點贊
收藏

51CTO技術棧公眾號

欧美三级一级片| 国产精品一区二区在线观看| 日本午夜精品视频| 蜜桃精品视频| 偷偷要91色婷婷| 天堂va久久久噜噜噜久久va| www.天天干.com| 爽好多水快深点欧美视频| 北条麻妃在线一区二区| 狠狠人妻久久久久久综合蜜桃| 97成人超碰| 午夜精品久久一牛影视| 亚洲欧美电影在线观看| 无码h黄肉3d动漫在线观看| 久久国产精品第一页| 国外视频精品毛片| 国产67194| 欧洲专线二区三区| 亚洲第一级黄色片| 欧美在线aaa| 高清不卡亚洲| 亚洲成人av电影在线| 五月天av影院| 97人人在线| 99精品视频在线免费观看| 91综合免费在线| 999视频在线| 亚洲免费综合| 欧美激情久久久久久| 欧美xxxooo| 欧美日中文字幕| 亚洲精选一区二区| 尤物网站在线观看| 亚洲视频精选| 日韩一区二区三区免费观看| 爱爱爱爱免费视频| 欧美天堂一区| 欧美亚洲图片小说| 91蝌蚪视频在线观看| 亚洲精华液一区二区三区| 亚洲成人免费影院| 一卡二卡三卡视频| 久久99亚洲网美利坚合众国| 亚洲精品视频免费看| 青青草原国产免费| 国产不卡在线| 亚洲久草在线视频| 丰满人妻一区二区三区53号| 成人av免费| 亚洲美女屁股眼交| 一级性生活视频| 成年人网站在线| 一区二区在线电影| 天堂8在线天堂资源bt| 国产乱码在线| 亚洲成人在线免费| 少妇无码av无码专区在线观看| 欧美xxxx视频| 欧美色视频日本高清在线观看| 霍思燕三级露全乳照| 国产福利电影在线播放| 欧美日韩国产色| 毛葺葺老太做受视频| 日日夜夜天天综合| 欧美日韩在线播放三区四区| 国产理论在线播放| **精品中文字幕一区二区三区| 欧美日韩成人激情| 中国特级黄色片| 欧美美女黄色| 亚洲最新视频在线| 永久免费看片直接| 黄色欧美日韩| 97在线视频观看| 久久精品视频5| 美女在线视频一区| 粉嫩av一区二区三区免费观看| 熟妇人妻中文av无码| 久久久久久久综合日本| 在线不卡视频一区二区| 丁香花在线影院| 色哟哟国产精品免费观看| 亚洲36d大奶网| 91麻豆精品激情在线观看最新| 国产视频自拍一区| 日本裸体美女视频| 在线一区视频| 国产日产亚洲精品| 人妻一区二区三区| 欧美激情一区二区在线| 成人一区二区av| www.日韩| 欧美成人伊人久久综合网| 午夜一区二区三区免费| 91精品国产自产拍在线观看蜜| 久久久久在线观看| 中文字幕人妻色偷偷久久| 国产福利电影一区二区三区| 日本免费一区二区三区| 里番在线播放| 欧美性xxxxxxxx| 亚洲精品国产成人av在线| 狠狠色狠狠色综合婷婷tag| 欧美麻豆久久久久久中文| 亚洲乱码国产乱码精品| 国产suv精品一区二区三区| 日韩欧美一区二区三区四区五区| 青草视频在线免费直播| 欧美日韩大陆在线| 美女久久久久久久久久| 欧美日韩视频| 成人免费自拍视频| 欧美精品少妇| 午夜在线成人av| 91香蕉视频在线观看视频| 亚洲欧美校园春色| 久久久久亚洲精品国产| 国产乱子伦精品无码码专区| 国产视频亚洲色图| 免费在线观看亚洲视频 | 免费一区二区三区视频导航| 插插插亚洲综合网| 中文字幕欧美在线观看| 国产夜色精品一区二区av| 三上悠亚久久精品| 免费看一区二区三区| 最近中文字幕日韩精品| 日日夜夜狠狠操| 99久久精品一区| www.国产在线播放| 一区二区三区四区高清视频| 久久久国产视频91| 中文字幕在线视频第一页| 久久久亚洲欧洲日产国码αv| 97视频在线免费| 99久久婷婷国产综合精品青牛牛 | 精品国产免费人成在线观看| 国产少妇在线观看| 国产一区美女在线| 免费看av软件| 91麻豆精品国产综合久久久| 色阁综合伊人av| 亚洲天堂网视频| 中文字幕在线不卡视频| wwwwwxxxx日本| 国产精品7m凸凹视频分类| 国产久一一精品| 老司机福利在线视频| 777亚洲妇女| 手机av在线看| 国产精品亚洲视频| 成人午夜免费在线视频| 日韩欧洲国产| 久久频这里精品99香蕉| 视频污在线观看| 欧美日韩午夜剧场| 欧美特级黄色录像| 美女久久久精品| 免费观看黄色大片| 99re热精品视频| 91精品国产乱码久久久久久久久 | 国产在线播放精品| 91国产美女视频| 黄色大片在线免费观看| 欧美日韩一级片网站| 国产精品白丝喷水在线观看| 国产麻豆成人精品| 欧美日韩性生活片| 欧美性感美女一区二区| 成人写真福利网| 日本aa在线| 精品伊人久久97| 在线观看xxxx| 亚洲综合色婷婷| xxx在线播放| 紧缚捆绑精品一区二区| 欧美视频在线观看视频| 沈樵精品国产成av片| 成人免费视频网| ririsao久久精品一区| 亚洲人成在线播放| 国产美女精品视频国产| 午夜久久福利影院| 欧美日韩国产色视频| 香港日本韩国三级网站| 中文字幕日韩一区二区不卡| 国产一区二区自拍| 九七影院97影院理论片久久| 欧美韩国理论所午夜片917电影| 色一情一乱一乱一区91av| 在线观看一区不卡| 国产午夜精品一区二区理论影院| 久久久久国产精品厨房| 色偷偷中文字幕| 天堂影院一区二区| 成人一区二区av| 欧美色网址大全| 国产精品一区二区欧美黑人喷潮水 | 在线播放一级片| 五月天激情综合| 免费精品在线视频| 久久综合久色欧美综合狠狠| 91网址在线观看精品| 国产精品久久久久久久久久妞妞| 一区精品在线| 竹菊久久久久久久| 福利视频一区二区三区| 欧美美女被草| 国产精品av在线| 波多野结衣中文在线| 精品国产一区二区在线| 欧美扣逼视频| 亚洲福利精品在线| www.av导航| 欧美日韩在线亚洲一区蜜芽| 国产又大又黄又粗| 亚洲电影第三页| 91人妻一区二区三区蜜臀| 久久视频在线观看| 日韩精品资源二区在线| 精品国产www| 欧美日韩在线免费观看| 黄色在线观看免费| 亚洲婷婷国产精品电影人久久| a毛片毛片av永久免费| av一二三不卡影片| 911亚洲精选| 国产精品自拍网站| 中文字幕12页| 久久er99热精品一区二区| 爆乳熟妇一区二区三区霸乳| 亚洲一区亚洲| 久久国产亚洲精品无码| 亚洲区一区二| 久久99久久99精品| 欧美久色视频| 毛片av在线播放| 一级欧洲+日本+国产 | 成人性爱视频在线观看| 国产视频精品一区二区三区| 日本人妻丰满熟妇久久久久久| 日韩欧美久久久| 精品国产伦一区二区三| 日韩天堂在线观看| 国产肥老妇视频| 欧美大片在线观看| 人妻一区二区三区四区| 日韩av在线最新| 青春草在线观看| 亚洲色图综合网| 在线免费观看黄| 日韩视频中文字幕| 国产一二区在线| 九九热视频这里只有精品| 色呦呦视频在线观看| 欧美黄色片在线观看| 91桃色在线| 97在线视频免费播放| 成人性生活av| 国产精品夜间视频香蕉| 亚洲精品无播放器在线播放| 成人a级免费视频| 午夜日韩影院| 丁香五月网久久综合| 秋霞在线一区| 日韩尤物视频| 中文字幕一区二区三区欧美日韩 | 久久夜色精品| 亚洲精品一二三四五区| 狠狠色狠狠色合久久伊人| 自拍一级黄色片| 成年人午夜久久久| 在哪里可以看毛片| 自拍偷拍欧美激情| 日本中文字幕免费观看| 色婷婷综合久久| 91theporn国产在线观看| 日韩精品专区在线影院观看| 日韩a在线看| 北条麻妃一区二区三区中文字幕| 视频在线这里都是精品| 欧美中文字幕精品| 日韩欧国产精品一区综合无码| 成人综合电影| 欧美限制电影| 国产精品国产三级国产专区51| 久久久久久黄| 1314成人网| 久久九九久精品国产免费直播| 多男操一女视频| 亚洲成人动漫一区| 亚洲一区二区视频在线播放| 精品国产一二三| 日本免费视频在线观看| 97视频com| 亚洲精品aa| 欧美极品视频一区二区三区| 午夜免费一区| 成人免费观看毛片| 国产福利一区在线| 亚洲AV无码成人精品区明星换面| 亚洲最新视频在线观看| 欧美性猛交xxxx乱大交hd| 欧美精品一区二| 麻豆传媒免费在线观看| 日韩免费精品视频| 好吊妞国产欧美日韩免费观看网站| 午夜精品福利一区二区| 国产精品久久国产愉拍| 国产成人精品一区二区在线小狼| 欧美精彩视频一区二区三区| 日韩欧美高清在线观看| 777xxx欧美| 91电影在线播放| 欧美综合在线观看| 国偷自产av一区二区三区| 欧美 日韩 国产 在线观看| 久久久久久9| 国产ts丝袜人妖系列视频| 亚洲蜜桃精久久久久久久| 国产男人搡女人免费视频| 日韩av资源在线播放| 七七成人影院| 99国精产品一二二线| 国产精品88久久久久久| 中文字幕国产免费| 国产午夜精品一区二区三区嫩草| 日本道在线观看| 亚洲成人黄色在线观看| 日本不卡影院| 99re国产视频| 欧美精品一线| 香蕉视频在线观看黄| 亚洲婷婷综合久久一本伊一区| 一级黄色短视频| 最近的2019中文字幕免费一页| 惠美惠精品网| 欧美高清性xxxxhdvideosex| 国产精品久久久久毛片大屁完整版| 人妻激情偷乱频一区二区三区| 一区二区视频免费在线观看| www.中文字幕| 欧美国产中文字幕| 成人性生交大片免费看96| 日韩精品综合在线| 成人三级在线视频| 久草国产精品视频| 国产丝袜高跟一区| 色综合一本到久久亚洲91| 日韩免费av一区二区三区| 麻豆亚洲精品| 色欲狠狠躁天天躁无码中文字幕 | 国产精品探花在线播放| 亚洲视频 欧洲视频| 亚洲综合精品国产一区二区三区 | 亚洲电影天堂av| 理论片午夜视频在线观看| 久久超碰亚洲| 丝袜美腿亚洲色图| 成人一级片免费看| 777欧美精品| aa级大片免费在线观看| 久久综合给合久久狠狠色| 日韩av二区在线播放| 精品在线观看一区| 日韩欧美一卡二卡| av在线中出| 日韩高清国产一区在线观看| 蜜臀va亚洲va欧美va天堂| 最新一区二区三区| 精品国产欧美一区二区| www.com.cn成人| 中文字幕中文字幕在线中一区高清 | 久草在线免费福利资源| 国产美女久久久| 欧美破处大片在线视频| 三级黄色片网站| 欧美日韩成人综合在线一区二区| 美洲精品一卡2卡三卡4卡四卡| 精品伊人久久大线蕉色首页| 日本在线观看不卡视频| 日韩欧美综合视频| 亚洲精品中文字幕女同| 久久er热在这里只有精品66| 全黄性性激高免费视频| 国产欧美一区二区精品仙草咪| 99热这里是精品| 日本午夜在线亚洲.国产| 国产精品videosex性欧美| 欲求不满的岳中文字幕| 精品视频在线免费| bbw在线视频| 在线精品亚洲一区二区| 99国产欧美久久久精品| 在线亚洲欧美日韩| 97视频免费在线观看| 99热国内精品| 中日韩精品一区二区三区| 日韩无一区二区| 国产电影一区二区三区爱妃记|