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

我是狀態(tài)機(jī), 一顆永遠(yuǎn)騷動(dòng)的機(jī)器引擎

開發(fā) 前端
狀態(tài)機(jī)是一種行為設(shè)計(jì)模式,它允許對(duì)象在其內(nèi)部狀態(tài)改變時(shí)改變其行為。看起來好像對(duì)象改變了它的類。

[[417324]]

本文轉(zhuǎn)載自微信公眾號(hào)「精益碼農(nóng)」,作者小碼甲 。轉(zhuǎn)載本文請(qǐng)聯(lián)系精益碼農(nóng)公眾號(hào)。

狀態(tài)機(jī)是一種行為設(shè)計(jì)模式,它允許對(duì)象在其內(nèi)部狀態(tài)改變時(shí)改變其行為。看起來好像對(duì)象改變了它的類。

請(qǐng)仔細(xì)理解上面每一個(gè)字。

我們以自動(dòng)售貨機(jī)為例,為簡(jiǎn)化演示,我們假設(shè)自動(dòng)售貨機(jī)只有1種商品, 故自動(dòng)售貨機(jī)有itemCount 、itemPrice 2個(gè)屬性。

不考慮動(dòng)作的前后相關(guān)性,自動(dòng)售貨機(jī)對(duì)外暴露4種行為:

  • 給自動(dòng)售貨機(jī)加貨 addItem
  • 選擇商品 requestItem
  • 付錢 insertMoney
  • 出貨 dispenseItem

重點(diǎn)來了,當(dāng)發(fā)生某種行為,自動(dòng)售貨機(jī)會(huì)進(jìn)入如下4種狀態(tài)之一, 并據(jù)此狀態(tài)做出特定動(dòng)作, 之后進(jìn)入另外一種狀態(tài).....

  • 有商品 hasItem
  • 無商品 noItem
  • 已經(jīng)選好商品 itemRequested
  • 已付錢 hasMoney

當(dāng)對(duì)象可能處于多種不同的狀態(tài)之一、根據(jù)傳入的動(dòng)作更改當(dāng)前的狀態(tài), 繼續(xù)接受后續(xù)動(dòng)作,狀態(tài)再次發(fā)生變化.....

這樣的模式類比于機(jī)器引擎,周而復(fù)始的工作和狀態(tài)轉(zhuǎn)化,這也是狀態(tài)機(jī)的定語叫“機(jī)Machine”的原因。

有了以上思路,我們嘗試溝通UML 偽代碼:

狀態(tài)機(jī)設(shè)計(jì)模式的偽代碼實(shí)現(xiàn):

  • 所謂的機(jī)器Machine維護(hù)了狀態(tài)切換的上下文
  • 機(jī)器對(duì)外暴露的行為,驅(qū)動(dòng)機(jī)器的狀態(tài)變更, 行為和狀態(tài)是有因果關(guān)系的
  • 機(jī)器到達(dá)特定的狀態(tài) 只具備特定的行為,其他行為是不被允許的, 這在外面看,貌似是對(duì)象改變了原類的行為

下面使用golang實(shí)現(xiàn)了 狀態(tài)機(jī)設(shè)計(jì)模型:這里你也可以看下golang 是如何體現(xiàn)OOP中的類繼承、接口實(shí)現(xiàn)

goodMachine:狀態(tài)變更上下文

  1. package main 
  2.  
  3. import ( 
  4.  "fmt" 
  5.  "reflect" 
  6.  
  7. type goodMachine struct { 
  8.  currentState state 
  9.  itemCount    int 
  10.  itemPrice    int 
  11.  
  12. func newGoodMachine(itemCount, itemPrice int) *goodMachine { 
  13.  v := &goodMachine{ 
  14.   itemCount: itemCount, 
  15.   itemPrice: itemPrice, 
  16.  } 
  17.  if itemCount <= 0 { 
  18.   v.setState(&noItemState{v}) // 實(shí)現(xiàn)state接口的是*noItemState 指針類型 
  19.  } else { 
  20.   v.setState(&hasItemState{v}) 
  21.  } 
  22.  return v 
  23.  
  24. func (v *goodMachine) setState(s state) { 
  25.  fmt.Println("enter state: ", reflect.TypeOf(s)) 
  26.  v.currentState = s 
  27.  
  28. func (v *goodMachine) requestItem() error { 
  29.  return v.currentState.requestItem() 
  30.  
  31. func (v *goodMachine) addItem(count int) error { 
  32.  return v.currentState.addItem(count
  33.  
  34. func (v *goodMachine) insertMoney(money int) error { 
  35.  return v.currentState.insertMoney(money) 
  36.  
  37. func (v *goodMachine) incrementItemCount(count int) { 
  38.  v.itemCount += count 
  39.  
  40. func (v goodMachine) dispenseItem() error { 
  41.  return v.currentState.dispenseItem() 

自動(dòng)售貨機(jī)對(duì)外的行為,被委托給特定的state對(duì)象

state:自動(dòng)售貨機(jī)對(duì)外暴露的行為

  1. package main 
  2.  
  3. //  代表某種狀態(tài),能接受的某種動(dòng)作 
  4. type state interface { 
  5.  addItem(count int) error 
  6.  requestItem() error 
  7.  insertMoney(money int) error 
  8.  dispenseItem() error 

noItemState : 無商品

  1. package main 
  2.  
  3. import "fmt" 
  4.  
  5. type noItemState struct { 
  6.  *goodMachine // 存在匿名類型 goodMachine,類型是*goodMachine 
  7.  
  8. //  給自動(dòng)售貨機(jī)供貨-----> 有貨狀態(tài) 
  9. func (i *noItemState) addItem(count int) error { 
  10.  i.incrementItemCount(count
  11.  i.setState(&hasItemState{i.goodMachine}) 
  12.  return nil 
  13.  
  14. func (i *noItemState) requestItem() error { 
  15.  return fmt.Errorf("item out of  stock"
  16.  
  17. func (i *noItemState) insertMoney(money int) error { 
  18.  return fmt.Errorf("item out of stock"
  19.  
  20. func (i *noItemState) dispenseItem() error { 
  21.  return fmt.Errorf("item out of stock"
  22.  
  23. // golang: 使用指針接受者實(shí)現(xiàn)了state接口的全部函數(shù),那么隱式表明*noItemState 指針類型實(shí)現(xiàn)了State接口 

注意:noItemState 結(jié)構(gòu)體內(nèi)定義了 goodMachine, 就表明noItemState繼承了goodMachine類 ;

指針接受者 noItemState實(shí)現(xiàn)了state接口的所有函數(shù),那么我們就說*noItemState實(shí)現(xiàn)了state接口。

hasItemState: 有商品

  1. package main 
  2.  
  3. import "fmt" 
  4.  
  5. type hasItemState struct { 
  6.  *goodMachine 
  7.  
  8. func (v *hasItemState) addItem(count int) error { 
  9.  v.incrementItemCount(count
  10.  return nil 
  11.  
  12. // 有人選擇了商品---> 沒貨狀態(tài)/已經(jīng)選定商品 
  13. func (v *hasItemState) requestItem() error { 
  14.  if v.goodMachine.itemCount == 0 { 
  15.   v.setState(&noItemState{v.goodMachine}) 
  16.   return fmt.Errorf("no item present"
  17.  } 
  18.  
  19.  fmt.Print("item  requested\n"
  20.  v.setState(&itemRequestedState{v.goodMachine}) 
  21.  return nil 
  22.  
  23. func (v *hasItemState) insertMoney(money int) error { 
  24.  return fmt.Errorf("Please select item first"
  25.  
  26. func (v *hasItemState) dispenseItem() error { 
  27.  return fmt.Errorf("Please select item first"

itemRequestedState:有人選定商品

  1. package main 
  2.  
  3. import "fmt" 
  4.  
  5. type itemRequestedState struct { 
  6.  *goodMachine 
  7.  
  8. func (i *itemRequestedState) addItem(count int) error { 
  9.  return fmt.Errorf("shopping is  in  process"
  10.  
  11. func (i *itemRequestedState) requestItem() error { 
  12.  return fmt.Errorf("item already requested"
  13.  
  14. // 付錢----> 已收錢狀態(tài) 
  15. func (i *itemRequestedState) insertMoney(money int) error { 
  16.  if money < i.goodMachine.itemPrice { 
  17.   fmt.Errorf("insert money is less, please insert %d", i.goodMachine) 
  18.  } 
  19.  fmt.Println("money entered is ok"
  20.  i.setState(&hasMoneyState{i.goodMachine}) 
  21.  return nil 
  22. func (i *itemRequestedState) dispenseItem() error { 
  23.  return fmt.Errorf("please insert money first"

hasMoneyState:已付錢

  1. package main 
  2.  
  3. import "fmt" 
  4.  
  5. type hasMoneyState struct { 
  6.  *goodMachine 
  7.  
  8. func (i *hasMoneyState) addItem(count int) error { 
  9.  return fmt.Errorf("shopping is in process"
  10. func (i *hasMoneyState) requestItem() error { 
  11.  return fmt.Errorf("shopping is in process"
  12. func (i *hasMoneyState) insertMoney(money int) error { 
  13.  return fmt.Errorf("already pay money"
  14. func (i *hasMoneyState) dispenseItem() error { 
  15.  fmt.Println("dispensing item"
  16.  i.goodMachine.itemCount = i.goodMachine.itemCount - 1 
  17.  if i.goodMachine.itemCount == 0 { 
  18.   i.setState(&noItemState{i.goodMachine}) 
  19.  } else { 
  20.   i.setState(&hasItemState{i.goodMachine}) 
  21.  } 
  22.  return nil 

main.go 執(zhí)行

  1. package main 
  2.  
  3. import ( 
  4.   "fmt" 
  5.   "log" 
  6.  
  7. func main() { 
  8.   goodMachine := newGoodMachine(1, 10) 
  9.   err := goodMachine.requestItem() 
  10.   if err != nil { 
  11.     log.Fatalf(err.Error()) 
  12.   } 
  13.  
  14.   err = goodMachine.insertMoney(10) 
  15.   if err != nil { 
  16.     log.Fatalf(err.Error()) 
  17.   } 
  18.  
  19.   err = goodMachine.dispenseItem() 
  20.   if err != nil { 
  21.     log.Fatalf(err.Error()) 
  22.   } 
  23.   fmt.Println() 
  24.  
  25.   err = goodMachine.requestItem() 
  26.   if err != nil { 
  27.     log.Fatalf(err.Error()) 
  28.   } 
  29.   err = goodMachine.insertMoney(10) 
  30.   if err != nil { 
  31.     log.Fatal(err.Error()) 
  32.   } 
  33.   err = goodMachine.dispenseItem() 
  34.   if err != nil { 
  35.     log.Fatalf(err.Error()) 
  36.   } 

初始化了商品數(shù)量為1,價(jià)格為10 的自動(dòng)售貨機(jī),連續(xù)掏10元錢買兩次, 隨時(shí)打印狀態(tài), 輸出如下:

  1. enter state:  *main.hasItemState 
  2. item  requested 
  3. enter state:  *main.itemRequestedState 
  4. money entered is ok 
  5. enter state:  *main.hasMoneyState      
  6. dispensing item 
  7. enter state:  *main.noItemState        
  8.  
  9. 2021/08/11 17:39:45 item out of  stock 
  10. exit status 1 

狀態(tài)機(jī)為什么定語是機(jī)器?Machine?

狀態(tài)機(jī)表現(xiàn)了:

對(duì)象的狀態(tài)受外界行為所影響,不斷的切換,到達(dá)特定的狀態(tài)又只能接受特定的行為, 真實(shí)生動(dòng)的體現(xiàn)了機(jī)器Machine引擎的特征。

本文示例亦是學(xué)習(xí)golang OOP編程的范例,golang 類繼承、接口實(shí)現(xiàn)實(shí)在是太秀了。 

github: https://github.com/zaozaoniao/statemachine

 

責(zé)任編輯:武曉燕 來源: 精益碼農(nóng)
相關(guān)推薦

2020-06-30 15:38:17

戴爾

2009-06-10 18:15:36

電腦下鄉(xiāng)家電下鄉(xiāng)

2022-12-27 14:29:37

javascript動(dòng)畫

2023-03-06 07:35:30

狀態(tài)機(jī)工具訂單狀態(tài)

2013-09-29 11:08:10

Bay Trail平板電腦

2025-08-28 01:12:00

狀態(tài)機(jī)系統(tǒng)編排

2013-04-16 13:57:36

2021-03-15 14:17:38

射頻芯片5G手機(jī)信號(hào)

2014-07-30 16:19:13

敏捷華為

2010-06-18 12:38:38

UML狀態(tài)機(jī)視圖

2010-07-30 15:58:18

2021-07-08 09:15:20

單片機(jī)編程狀態(tài)機(jī)編程語言

2023-03-14 13:57:22

狀態(tài)機(jī)聊天機(jī)器人

2020-10-15 10:38:35

C語言狀態(tài)模型

2022-11-01 12:30:11

機(jī)器學(xué)習(xí)解碼系統(tǒng)

2020-03-27 10:50:29

DSL 狀態(tài)機(jī)工具

2013-09-03 09:57:43

JavaScript有限狀態(tài)機(jī)

2010-06-18 13:25:44

UML狀態(tài)機(jī)視圖

2022-08-26 12:13:40

黑客網(wǎng)絡(luò)攻擊
點(diǎn)贊
收藏

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

91精品国产福利| 樱花草涩涩www在线播放| 国内精品久久久久久久影视蜜臀| 精品一区二区免费看| 在线观看国产精品淫| 最新中文字幕2018| aaa一区二区三区| 在线观看的日韩av| 尤物九九久久国产精品的特点 | 久久99精品久久久久久动态图| 久久视频免费观看| 天天插天天射天天干| 精品国产丝袜高跟鞋| 国产在线精品一区在线观看麻豆| 久久噜噜噜精品国产亚洲综合| 国产免费看av| 日韩一区二区三区色| 色哟哟精品一区| 免费在线精品视频| 四虎影院在线播放| 国产精品69毛片高清亚洲| 午夜免费久久久久| 欧美成人777| 精品国产欧美日韩| 亚洲精品国精品久久99热一| 在线观看日本一区二区| 美女搞黄视频在线观看| 亚洲尤物在线视频观看| 亚洲精品在线免费看| 国产又爽又黄网站亚洲视频123| 久久爱另类一区二区小说| 欧美中文字幕在线视频| 国产无遮挡又黄又爽| 99久久精品费精品国产| 欧美放荡的少妇| 精品免费国产一区二区| 国产精品25p| 95精品视频在线| www日韩av| 国产精品一区二区av白丝下载 | 精品不卡视频| 久久人体大胆视频| 天堂а√在线中文在线鲁大师| 九九精品在线| 亚洲热线99精品视频| 无码精品国产一区二区三区免费| 伊人影院在线视频| 日韩理论片在线| 亚洲综合av一区| 国产精品视频一区二区久久| 日韩成人免费电影| 26uuu日韩精品一区二区| 国产精品2020| 亚洲黄色毛片| 91精品国产亚洲| 日韩伦理在线视频| 国产日韩一区二区三区在线播放 | 亚洲黄色免费av| 午夜精品久久久久| 日韩少妇内射免费播放18禁裸乳| а√在线中文网新版地址在线| 亚洲一区二区三区四区在线免费观看| 免费的av在线| 草莓视频丝瓜在线观看丝瓜18| 亚洲午夜久久久久中文字幕久| 日b视频免费观看| heyzo在线| 欧美日韩免费在线| 一区二区91美女张开腿让人桶| 成人午夜电影在线观看| 国产精品午夜春色av| 在线视频欧美一区| 97影院秋霞午夜在线观看| 亚洲主播在线播放| 91av资源网| 国产福利亚洲| 日韩一级完整毛片| a视频免费观看| 日韩精品中文字幕第1页| 久久久精品在线观看| 高h视频免费观看| 99精品国产福利在线观看免费| 热久久这里只有| 中文字幕在线观看高清| 亚洲美女黄色| 欧美在线视频观看免费网站| 久久久久精彩视频| 在线播放亚洲| 欧美制服第一页| 在线免费看毛片| 国产成人av电影| 欧美人xxxxx| 4438x成人网全国最大| 午夜精品爽啪视频| 中文字幕国内自拍| 91精品导航| 国产亚洲aⅴaaaaaa毛片| 亚洲天堂黄色片| 亚洲永久字幕| 91影院未满十八岁禁止入内| 欧美日韩视频精品二区| 亚洲欧洲av色图| 国产伦精品一区二区三区四区视频_ | 乱子伦一区二区三区| 国产精品一区二区在线看| 欧美亚洲国产另类| 一级特黄色大片| caoporn国产一区二区| 亚洲精品中文字幕在线| а√天堂8资源在线| 6080国产精品一区二区| 少妇大叫太粗太大爽一区二区| 99久久婷婷这里只有精品 | 亚洲女人天堂av| 欧美做爰啪啪xxxⅹ性| 亚欧美中日韩视频| 91久久精品国产91久久性色tv | 国语一区二区三区| 久久久91精品| 一二三区免费视频| 久久夜色精品| 日韩av免费看| 囯产精品久久久久久| 国产精品久久久久影院老司 | 久久国产高清视频| 日韩一区三区| 欧美一级电影在线| 成人毛片在线免费观看| 亚洲天堂2016| 国产一伦一伦一伦| 国产在线观看91一区二区三区| 久久久久久中文字幕| 99久久夜色精品国产亚洲| 国产日本一区二区| 涩涩涩999| av在线免费一区| 欧美午夜片在线免费观看| 野战少妇38p| 欧美午夜在线视频| 亚洲一区二区久久久久久| www黄在线观看| 亚洲一区二区小说| 在线观看一区二区精品视频| 噜噜噜在线视频| 亚洲精品系列| 黄色一区三区| 视频三区在线观看| 亚洲国产综合视频在线观看| 九色91porny| 综合在线视频| 91久久久国产精品| 国产美女av在线| 欧美一区二区三区免费观看视频| 手机av在线看| 国产美女视频91| 青青草原网站在线观看| 国产精品亚洲四区在线观看| 91精品国产综合久久婷婷香蕉| 中文字幕有码在线播放| 一区二区三区日本久久久| 久久久久久97| 五月婷婷六月丁香| 日韩欧美黄色动漫| 成人午夜福利一区二区| 先锋a资源在线看亚洲| 欧美一二三区| 久久亚洲资源中文字| 久久视频在线看| 午夜精品一二三区| 欧美国产精品久久| 国产九九在线观看| 我不卡影院28| 国产精品露出视频| 伊人久久在线| 日韩最新在线视频| 亚洲va欧美va| 日韩欧美在线视频| 91视频最新网址| 国产成人午夜视频| 欧美亚洲精品一区二区| 精品盗摄女厕tp美女嘘嘘| 国产日韩精品在线观看| 欧美色图天堂| 亚洲视频一区二区三区| 国产精品永久久久久久久久久| 亚洲一区二区偷拍精品| 国精产品一区二区三区| 国产精品久久| 久久波多野结衣| 免费影视亚洲| 亚洲精品资源美女情侣酒店| 亚洲熟妇无码久久精品| 一区二区三区日韩在线观看| 无码熟妇人妻av| 国产在线播放一区三区四| 日韩国产欧美亚洲| 欧美3p视频| 久久精品国产精品国产精品污 | 在线观看视频91| 男女做暖暖视频| 久久精品视频在线看| a级大片免费看| 丝袜诱惑制服诱惑色一区在线观看 | 在线视频三区| 亚洲精品99久久久久中文字幕| 又污又黄的网站| 亚洲成在线观看| 亚洲熟女毛茸茸| 国产亚洲欧美色| 国产精品一区二区在线免费观看| 青青草国产精品97视觉盛宴| 久久福利电影| 亚洲精品成a人ⅴ香蕉片| 久久久久久com| 欧美极品另类| 911国产精品| 国产精品第5页| 亚洲国产日韩a在线播放| 国产jizz18女人高潮| 久久久三级国产网站| 亚洲精品成人无码毛片| 久久国产精品第一页| 欧洲av无码放荡人妇网站| 狠狠爱综合网| 热久久最新网址| 欧美xxxxx视频| 日韩av电影免费播放| 女同久久另类99精品国产| 91一区二区三区| 精品午夜视频| 韩国三级日本三级少妇99| 成人在线免费看片| 日韩在线视频观看| 国产精品无码2021在线观看| 亚洲精品视频播放| 无码h黄肉3d动漫在线观看| 日韩精品在线一区| 国产不卡av在线播放| 欧美老年两性高潮| 91av国产精品| 欧美挠脚心视频网站| 日韩欧美一级大片| 欧美伊人精品成人久久综合97 | 日本a级片久久久| 羞羞答答一区二区| 欧美激情一区二区三区在线视频 | 黄色精品视频| 国产精品高精视频免费| 成人午夜精品| 国产精品美女免费| 欧美91在线|欧美| 成人h片在线播放免费网站| 久久免费影院| 91免费的视频在线播放| 成人亚洲精品| 999热视频| 9999久久久久| 久久av二区| 成人亚洲一区二区| 免费看av软件| 国产一区日韩欧美| 丰满少妇大力进入| 午夜一级在线看亚洲| 欧美精品成人网| 美女www一区二区| 亚洲一二三不卡| 成人午夜又粗又硬又大| 少妇特黄一区二区三区| 国产欧美一区二区精品性色超碰| 91资源在线播放| 亚洲综合成人网| 91video| 欧美精品少妇一区二区三区| 精品免费久久久| 亚洲精品久久久久中文字幕二区 | 国产精品久久久久久69| 日韩精品专区在线影院观看| 天堂网2014av| 中国人与牲禽动交精品| 日本小视频在线免费观看| 2019中文字幕免费视频| 91综合国产| 国产66精品久久久久999小说| 日韩美脚连裤袜丝袜在线| 日韩高清av电影| 欧美久久九九| 日韩精品无码一区二区三区免费 | 92国产精品视频| 欧美一区二区三区红桃小说| 亚洲精品影院| 国产欧美日韩一区二区三区在线| 日本激情视频在线播放| 成人激情黄色小说| 国产一区在线观看免费| 亚洲国产日韩精品| 一卡二卡三卡在线观看| 亚洲成色www8888| 欧美尤物美女在线| 91黑丝在线观看| 国产一区二区三区亚洲综合 | 国产乱视频在线观看| 欧美久久久精品| 日本最新在线视频| 欧美精品18videos性欧美| 99只有精品| 久久精品国产第一区二区三区最新章节 | 亚洲aⅴ乱码精品成人区| 精品国产欧美一区二区三区成人| 草草视频在线| 亚洲专区中文字幕| 日本a级不卡| 久久久久久久久久久久久国产精品| 国产成人在线看| 亚洲AV成人无码网站天堂久久| 欧美日韩一区二区精品| 亚洲免费黄色片| 久久夜色精品亚洲噜噜国产mv| 视频二区不卡| 国产一区二区三区四区hd| 中文字幕免费一区二区| gogogo高清免费观看在线视频| www亚洲一区| 日韩免费观看一区二区| 日韩亚洲欧美一区| 蜜桃视频网站在线| 国产精品视频精品| 精品国产乱码久久久| 国产亚洲天堂网| 99这里只有精品| 国产大片aaa| 欧美mv和日韩mv国产网站| 日韩一级片免费| 精品国内自产拍在线观看| av成人在线播放| 神马欧美一区二区| 日韩国产精品久久久| 97超碰在线资源| 日本久久电影网| 欧美美乳在线| 国产不卡av在线| 精品国产一区二区三区久久久蜜臀| 人妻精品无码一区二区三区 | 色涩成人影视在线播放| 亚洲一区二区三区高清| 国产夫妻性爱视频| 疯狂蹂躏欧美一区二区精品| 同心难改在线观看| 欧美中文字幕第一页| 久久超碰99| 亚洲高清在线免费观看| 欧美国产日本韩| 国产又粗又黄又爽的视频| 久久人体大胆视频| 91精品尤物| 国产素人在线观看| ww亚洲ww在线观看国产| 国产精品高清无码| 日韩中文字幕亚洲| 国产精区一区二区| 国产玉足脚交久久欧美| 波多野结衣在线aⅴ中文字幕不卡| 国产午夜小视频| 亚洲品质视频自拍网| 欧美黄页免费| 日韩成人手机在线| 91在线国内视频| 中文在线观看av| 久久综合免费视频影院| 国产一区二区三区不卡av| 日本成年人网址| 国产精品国产三级国产aⅴ中文| h狠狠躁死你h高h| 91av在线看| 91影院成人| 极品白嫩少妇无套内谢| 欧美日韩在线看| 日本免费视频在线观看| 国产精品一区二区在线观看 | 在线观看免费黄视频| 3d动漫啪啪精品一区二区免费| 国产偷自视频区视频一区二区| 免费看裸体网站| 欧美v日韩v国产v| 亚洲第一二三四区| 超碰在线免费观看97| 91在线播放网址| 亚洲一区二区人妻| 久久久人成影片一区二区三区| 久久99国内| 91人妻一区二区三区| 一本到不卡精品视频在线观看| 日本中文字幕在线播放| 国产伦精品一区二区三区四区视频| 日韩电影一二三区| 免费在线一区二区三区| 国产午夜精品全部视频在线播放| 国产精品高清一区二区| 欧洲黄色一级视频| 一区二区欧美国产| 91se在线|