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

設計模式系列—狀態模式

開發 前端
本篇和大家一起來學習狀態模式相關內容。

 模式定義

對有狀態的對象,把復雜的“判斷邏輯”提取到不同的狀態對象中,允許狀態對象在其內部狀態發生改變時改變其行為。

狀態模式把受環境改變的對象行為包裝在不同的狀態對象里,其意圖是讓一個對象在其內部狀態改變的時候,其行為也隨之改變。現在我們來分析其基本結構和實現方法。

模板實現如下:

  1. package com.niuh.designpattern.state.v1; 
  2.  
  3. /** 
  4.  * <p> 
  5.  * 狀態模式 
  6.  * </p> 
  7.  */ 
  8. public class StatePattern { 
  9.  
  10.     public static void main(String[] args) { 
  11.         //創建環境   
  12.         Context context = new Context(); 
  13.         //處理請求 
  14.         context.Handle(); 
  15.         context.Handle(); 
  16.         context.Handle(); 
  17.         context.Handle(); 
  18.     } 
  19.  
  20. //抽象狀態類 
  21. abstract class State { 
  22.     public abstract void Handle(Context context); 
  23.  
  24. //具體狀態A類 
  25. class ConcreteStateA extends State { 
  26.     public void Handle(Context context) { 
  27.         System.out.println("當前狀態是 A."); 
  28.         context.setState(new ConcreteStateB()); 
  29.     } 
  30.  
  31. //具體狀態B類 
  32. class ConcreteStateB extends State { 
  33.     public void Handle(Context context) { 
  34.         System.out.println("當前狀態是 B."); 
  35.         context.setState(new ConcreteStateA()); 
  36.     } 
  37.  
  38. //環境類 
  39. class Context { 
  40.     private State state; 
  41.  
  42.     //定義環境類的初始狀態 
  43.     public Context() { 
  44.         this.state = new ConcreteStateA(); 
  45.     } 
  46.  
  47.     //設置新狀態 
  48.     public void setState(State state) { 
  49.         this.state = state; 
  50.     } 
  51.  
  52.     //讀取狀態 
  53.     public State getState() { 
  54.         return (state); 
  55.     } 
  56.  
  57.     //對請求做處理 
  58.     public void Handle() { 
  59.         state.Handle(this); 
  60.     } 

輸出結果如下:

  • 當前狀態是 A.
  • 當前狀態是 B.
  • 當前狀態是 A.
  • 當前狀態是 B.

解決的問題

對象的行為依賴于它的狀態(屬性),并且可以根據它的狀態改變而改變它的相關行為。

 

模式組成

實例說明

實例概況

用“狀態模式”設計一個多線程的狀態轉換程序。

 

分析:多線程存在 5 種狀態,分別為新建狀態、就緒狀態、運行狀態、阻塞狀態和死亡狀態,各個狀態當遇到相關方法調用或事件觸發時會轉換到其他狀態,其狀態轉換規律如下所示:

現在先定義一個抽象狀態類(TheadState),然后為上圖的每個狀態設計一個具體狀態類,它們是新建狀態(New)、就緒狀態(Runnable )、運行狀態(Running)、阻塞狀態(Blocked)和死亡狀態(Dead),每個狀態中有觸發它們轉變狀態的方法,環境類(ThreadContext)中先生成一個初始狀態(New),并提供相關觸發方法,下圖所示是線程狀態轉換程序的結構圖:

使用步驟

 

步驟1:定義抽象狀態類:線程狀態

  1. abstract class ThreadState { 
  2.     //狀態名 
  3.     protected String stateName; 

步驟2: 定義具體的狀態類

  1. //具體狀態類:新建狀態 
  2. class New extends ThreadState { 
  3.     public New() { 
  4.         stateName = "新建狀態"
  5.         System.out.println("當前線程處于:新建狀態."); 
  6.     } 
  7.  
  8.     public void start(ThreadContext hj) { 
  9.         System.out.print("調用start()方法-->"); 
  10.         if (stateName.equals("新建狀態")) { 
  11.             hj.setState(new Runnable()); 
  12.         } else { 
  13.             System.out.println("當前線程不是新建狀態,不能調用start()方法."); 
  14.         } 
  15.     } 
  16.  
  17. //具體狀態類:就緒狀態 
  18. class Runnable extends ThreadState { 
  19.     public Runnable() { 
  20.         stateName = "就緒狀態"
  21.         System.out.println("當前線程處于:就緒狀態."); 
  22.     } 
  23.  
  24.     public void getCPU(ThreadContext hj) { 
  25.         System.out.print("獲得CPU時間-->"); 
  26.         if (stateName.equals("就緒狀態")) { 
  27.             hj.setState(new Running()); 
  28.         } else { 
  29.             System.out.println("當前線程不是就緒狀態,不能獲取CPU."); 
  30.         } 
  31.     } 
  32.  
  33. //具體狀態類:運行狀態 
  34. class Running extends ThreadState { 
  35.     public Running() { 
  36.         stateName = "運行狀態"
  37.         System.out.println("當前線程處于:運行狀態."); 
  38.     } 
  39.  
  40.     public void suspend(ThreadContext hj) { 
  41.         System.out.print("調用suspend()方法-->"); 
  42.         if (stateName.equals("運行狀態")) { 
  43.             hj.setState(new Blocked()); 
  44.         } else { 
  45.             System.out.println("當前線程不是運行狀態,不能調用suspend()方法."); 
  46.         } 
  47.     } 
  48.  
  49.     public void stop(ThreadContext hj) { 
  50.         System.out.print("調用stop()方法-->"); 
  51.         if (stateName.equals("運行狀態")) { 
  52.             hj.setState(new Dead()); 
  53.         } else { 
  54.             System.out.println("當前線程不是運行狀態,不能調用stop()方法."); 
  55.         } 
  56.     } 
  57.  
  58. //具體狀態類:阻塞狀態 
  59. class Blocked extends ThreadState { 
  60.     public Blocked() { 
  61.         stateName = "阻塞狀態"
  62.         System.out.println("當前線程處于:阻塞狀態."); 
  63.     } 
  64.  
  65.     public void resume(ThreadContext hj) { 
  66.         System.out.print("調用resume()方法-->"); 
  67.         if (stateName.equals("阻塞狀態")) { 
  68.             hj.setState(new Runnable()); 
  69.         } else { 
  70.             System.out.println("當前線程不是阻塞狀態,不能調用resume()方法."); 
  71.         } 
  72.     } 
  73.  
  74. //具體狀態類:死亡狀態 
  75. class Dead extends ThreadState { 
  76.     public Dead() { 
  77.         stateName = "死亡狀態"
  78.         System.out.println("當前線程處于:死亡狀態."); 
  79.     } 

步驟3:定義環境類

  1. class ThreadContext { 
  2.     private ThreadState state; 
  3.  
  4.     ThreadContext() { 
  5.         state = new New(); 
  6.     } 
  7.  
  8.     public void setState(ThreadState state) { 
  9.         this.state = state; 
  10.     } 
  11.  
  12.     public ThreadState getState() { 
  13.         return state; 
  14.     } 
  15.  
  16.     public void start() { 
  17.         ((New) state).start(this); 
  18.     } 
  19.  
  20.     public void getCPU() { 
  21.         ((Runnable) state).getCPU(this); 
  22.     } 
  23.  
  24.     public void suspend() { 
  25.         ((Running) state).suspend(this); 
  26.     } 
  27.  
  28.     public void stop() { 
  29.         ((Running) state).stop(this); 
  30.     } 
  31.  
  32.     public void resume() { 
  33.         ((Blocked) state).resume(this); 
  34.     } 

輸出結果

  • 當前線程處于:新建狀態.
  • 調用start()方法-->當前線程處于:就緒狀態.
  • 獲得CPU時間-->當前線程處于:運行狀態.
  • 調用suspend()方法-->當前線程處于:阻塞狀態.
  • 調用resume()方法-->當前線程處于:就緒狀態.
  • 獲得CPU時間-->當前線程處于:運行狀態.
  • 調用stop()方法-->當前線程處于:死亡狀態.

優點

  1. 狀態模式將與特定狀態相關的行為局部化到一個狀態中,并且將不同狀態的行為分割開來,滿足“單一職責原則”。
  2. 減少對象間的相互依賴。將不同的狀態引入獨立的對象中會使得狀態轉換變得更加明確,且減少對象間的相互依賴。
  3. 有利于程序的擴展。通過定義新的子類很容易地增加新的狀態和轉換。

缺點

  1. 狀態模式的使用必然會增加系統的類與對象的個數。
  2. 狀態模式的結構與實現都較為復雜,如果使用不當會導致程序結構和代碼的混亂。

應用場景

通常在以下情況下可以考慮使用狀態模式。

  • 當一個對象的行為取決于它的狀態,并且它必須在運行時根據狀態改變它的行為時,就可以考慮使用狀態模式。
  • 一個操作中含有龐大的分支結構,并且這些分支決定于對象的狀態時。

狀態模式的擴展

 

在有些情況下,可能有多個環境對象需要共享一組狀態,這時需要引入享元模式,將這些具體狀態對象放在集合中供程序共享,其結構圖如下:

分析:共享狀態模式的不同之處是在環境類中增加了一個 HashMap 來保存相關狀態,當需要某種狀態時可以從中獲取,其程序代碼如下:

  1. package com.niuh.designpattern.state.v3; 
  2.  
  3. import java.util.HashMap; 
  4.  
  5. /** 
  6.  * <p> 
  7.  * 共享狀態模式 
  8.  * </p> 
  9.  */ 
  10. public class FlyweightStatePattern { 
  11.     public static void main(String[] args) { 
  12.         //創建環境  
  13.         ShareContext context = new ShareContext(); 
  14.         //處理請求 
  15.         context.Handle(); 
  16.         context.Handle(); 
  17.         context.Handle(); 
  18.         context.Handle(); 
  19.     } 
  20.  
  21. //抽象狀態類 
  22. abstract class ShareState { 
  23.     public abstract void Handle(ShareContext context); 
  24.  
  25. //具體狀態1類 
  26. class ConcreteState1 extends ShareState { 
  27.     public void Handle(ShareContext context) { 
  28.         System.out.println("當前狀態是: 狀態1"); 
  29.         context.setState(context.getState("2")); 
  30.     } 
  31.  
  32. //具體狀態2類 
  33. class ConcreteState2 extends ShareState { 
  34.     public void Handle(ShareContext context) { 
  35.         System.out.println("當前狀態是: 狀態2"); 
  36.         context.setState(context.getState("1")); 
  37.     } 
  38.  
  39. //環境類 
  40. class ShareContext { 
  41.     private ShareState state; 
  42.     private HashMap<String, ShareState> stateSet = new HashMap<String, ShareState>(); 
  43.  
  44.     public ShareContext() { 
  45.         state = new ConcreteState1(); 
  46.         stateSet.put("1", state); 
  47.         state = new ConcreteState2(); 
  48.         stateSet.put("2", state); 
  49.         state = getState("1"); 
  50.     } 
  51.  
  52.     //設置新狀態 
  53.     public void setState(ShareState state) { 
  54.         this.state = state; 
  55.     } 
  56.  
  57.     //讀取狀態 
  58.     public ShareState getState(String key) { 
  59.         ShareState s = (ShareState) stateSet.get(key); 
  60.         return s; 
  61.     } 
  62.  
  63.     //對請求做處理 
  64.     public void Handle() { 
  65.         state.Handle(this); 
  66.     } 

輸出結果如下

  • 當前狀態是: 狀態1
  • 當前狀態是: 狀態2
  • 當前狀態是: 狀態1
  • 當前狀態是: 狀態2

 

源碼中的應用

  1. #JDK中的狀態模式: 
  2. java.util.Iterator 
  3. # 通過FacesServlet控制, 行為取決于當前JSF生命周期的階段(狀態 
  4. javax.faces.lifecycle.LifeCycle#execute() 

PS:以上代碼提交在 Github :

https://github.com/Niuh-Study/niuh-designpatterns.git

責任編輯:姜華 來源: 今日頭條
相關推薦

2020-11-03 13:05:18

命令模式

2020-10-23 09:40:26

設計模式

2022-01-12 13:33:25

工廠模式設計

2020-10-20 13:33:00

建造者模式

2012-01-13 15:59:07

2021-10-28 19:09:09

模式原型Java

2021-10-26 00:21:19

設計模式建造者

2020-11-09 08:20:33

解釋器模式

2020-10-28 11:56:47

橋接模式

2020-11-05 09:38:07

中介者模式

2020-10-21 14:29:15

原型模式

2020-10-19 09:28:00

抽象工廠模式

2021-03-02 08:50:31

設計單例模式

2013-11-26 15:48:53

Android設計模式SDK

2021-09-29 13:53:17

抽象工廠模式

2022-01-14 09:22:22

設計模式橋接

2021-06-09 08:53:34

設計模式策略模式工廠模式

2012-08-30 09:07:33

設計模式

2021-06-22 15:27:13

設計模式迭代器模式Java

2020-11-02 10:41:33

備忘錄模式
點贊
收藏

51CTO技術棧公眾號

中文字幕在线免费观看视频| 中文字幕乱码av| 手机av免费在线| 国产在线不卡视频| 久久天天躁狠狠躁夜夜躁2014| 性生生活大片免费看视频| 婷婷视频在线| 国产成人精品三级麻豆| 国模吧一区二区三区| 亚洲精品乱码久久久久久不卡 | 亚洲最新av网址| jizzzz日本| 91网在线看| 91在线porny国产在线看| 亚州av一区二区| 懂色av蜜桃av| jizz性欧美23| 色久优优欧美色久优优| 中文字幕剧情在线观看一区| 亚洲第一色视频| 香蕉久久国产| 亚洲人a成www在线影院| 亚洲男人天堂2021| 美女搞黄视频在线观看| 国产一区二区三区不卡视频网站| 色婷婷香蕉在线一区二区| 欧美大香线蕉线伊人久久| 亚洲午夜精品久久久| 欧美成人69av| 亚洲人成网站色ww在线| 在线观看免费看片| 韩日视频在线观看| 青青草原免费观看| 99a精品视频在线观看| 色网站国产精品| www婷婷av久久久影片| 黄色软件在线观看| 风间由美一区二区三区在线观看| 国产ts人妖一区二区三区| 影音先锋男人在线| 欧美一级全黄| 日韩三级精品电影久久久| 热久久精品国产| 亚洲资源一区| 国产精品久久影院| 免费日韩av电影| 亚洲精品综合网| 麻豆精品一区二区| 日本三级久久久| 黄网站免费在线| 91精品国产自产在线观看永久∴| 亚洲欧美成人网| 亚洲视频天天射| 高清在线一区二区| 欧美日本一道本在线视频| 日韩你懂的在线播放| 日韩成人三级视频| 免费a级毛片在线播放| 99re视频精品| 国产精品免费一区二区三区| 国产免费av观看| 久久99精品一区二区三区| 国产成人综合久久| 精品视频久久久久| 亚洲一级特黄| 久久久亚洲精选| 久久综合加勒比| 国产精品豆花视频| 久久久久久亚洲精品不卡| 美国黄色小视频| 日韩精品一区二区不卡| 免费看污片网站| 欧美日韩国产网站| 在线精品亚洲一区二区不卡| 男人草女人视频| 污污视频在线看| 亚洲免费在线视频一区 二区| 一区二区欧美日韩| 97人妻精品一区二区三区免 | 久久久久久久999精品视频| 小泽玛利亚一区二区免费| 97精品视频| 久久精品成人动漫| 极品魔鬼身材女神啪啪精品| 五月精品视频| 九九热精品在线| 久草资源在线视频| 国产欧美日韩一级| 日本亚洲欧洲色α| 天天干,天天干| 蜜桃视频在线观看一区二区| 国产日本欧美视频| www.99视频| 韩国一区二区在线观看| 99国产超薄丝袜足j在线观看| 午夜精品一二三区| 成人97人人超碰人人99| 欧美精品七区| 亚洲搞黄视频| 精品中文字幕一区二区三区四区| 色综合色综合色综合| 日日噜噜夜夜狠狠| 国内不卡的一区二区三区中文字幕| 欧美一区欧美二区| 少妇精品无码一区二区三区| 欧美色图婷婷| 最近2019中文字幕mv免费看 | 中文字幕成人一区| freemovies性欧美| 一区二区三区精品| 黄色国产精品视频| 欧美黄视频在线观看| 亚洲国产成人久久| 四虎地址8848| 在线亚洲伦理| 成人免费福利在线| 五月婷婷久久久| 中文字幕在线一区| 91视频 - 88av| 欧美性理论片在线观看片免费| 欧美蜜桃一区二区三区 | 国产成人免费视频网站| 精品无码久久久久国产| 一级毛片视频在线观看| 亚洲国产精品久久人人爱 | 伊人春色在线观看| 欧洲一区二区三区在线| avtt中文字幕| 三上亚洲一区二区| 精品欧美日韩在线| www.国产黄色| 久久青草欧美一区二区三区| 欧美日韩精品一区二区三区视频播放 | 欧美美女喷水视频| 老司机午夜免费福利| 成人系列视频| 久久99久久久久久久噜噜| 久久久久在线视频| 国产美女av一区二区三区| 免费成人av网站| jizz性欧美10| 欧美日韩中文字幕一区二区| 男男做爰猛烈叫床爽爽小说| 亚洲天堂一区二区三区四区| 人九九综合九九宗合| 亚洲精品久久久久久久久久久久久久 | 亚洲a视频在线观看| 国产精品国产三级国产普通话蜜臀 | 中文字幕精品三区| 国产日产欧美视频| 国产伦乱精品| 久久久久免费视频| 国产高清第一页| 国产精品成人免费在线| 午夜欧美福利视频| 久久最新网址| 国内精品小视频在线观看| 国产精品欧美综合亚洲| 亚洲国产高清在线| 99热手机在线| 日韩a一区二区| 国产精品高潮粉嫩av| 毛片免费在线观看| 色老头久久综合| 97人妻精品一区二区免费| 西西裸体人体做爰大胆久久久| 精品视频高清无人区区二区三区| 欧美午夜大胆人体| 精品三级av在线| 一区二区三区免费高清视频| 国产suv一区二区三区88区| 无码毛片aaa在线| 亚洲成av人片在线观看www| 麻豆国产精品va在线观看不卡 | 亚洲国产一区二区精品专区| 国产精品麻豆免费版| 91在线超碰| 亚洲精品电影在线观看| 日本中文字幕第一页| 99视频精品免费视频| 国产青青在线视频| 九九热线有精品视频99| 日本电影亚洲天堂| 高清福利在线观看| 欧美日韩亚洲丝袜制服| 中文字幕手机在线观看| 成人手机电影网| 黄色片视频在线免费观看| 成人av资源电影网站| 国产成人涩涩涩视频在线观看| 大片免费播放在线视频| 91精品黄色片免费大全| www.99re7| 92国产精品观看| 色诱视频在线观看| 国产精品精品国产一区二区| 成人在线视频电影| 日本免费一区二区六区| 国产亚洲人成a一在线v站| 一区二区三区精| 成人欧美一区二区三区在线播放| 日韩精品xxx| 亚洲在线电影| 中文字幕99| 久久国产精品免费精品3p| 国产精品福利久久久| 在线中文字幕-区二区三区四区| 精品福利在线导航| 超碰在线观看91| 亚洲欧美日韩国产手机在线| 免费黄色三级网站| 欧美aaaaa成人免费观看视频| 欧美日韩中文字幕在线播放 | 日韩影院一区| 日韩视频1区| 国产91久久婷婷一区二区| 黄色国产网站在线播放| 日韩精品在线影院| 97精品人妻一区二区三区| 婷婷六月综合网| 公肉吊粗大爽色翁浪妇视频| 国产成人免费在线| 日韩福利视频在线| 亚洲老妇激情| 日韩三级在线播放| 欧美电影免费网站| 亚洲tv在线观看| 欧美7777| 97精品一区二区视频在线观看| 欧美激情黑人| 亚洲人成电影网站色xx| 亚洲精品国产手机| 69久久99精品久久久久婷婷| 男人天堂av在线播放| 亚洲图片一区二区| 欧美激情图片小说| 最新成人av在线| √天堂中文官网8在线| 最新国产成人在线观看| 小早川怜子一区二区的演员表| 国产欧美日韩卡一| 欧美人与禽zoz0善交| 国产女人aaa级久久久级| 91网站免费入口| 国产欧美1区2区3区| 高清国产在线观看| 国产女人18毛片水真多成人如厕| 欧美丰满美乳xxⅹ高潮www| 久久久久久免费毛片精品| 麻豆精品免费视频| 国产日韩欧美麻豆| 欧美成人久久久免费播放| 国产精品久久久久久久久晋中 | 99re6这里只有精品| 无码免费一区二区三区免费播放 | 欧美国产视频一区| 欧美午夜一区| 青青青青草视频| 亚洲欧美视频一区二区三区| 国产精品wwwww| 七七婷婷婷婷精品国产| 一级黄色录像在线观看| 国产在线播精品第三| 国产乱国产乱老熟300部视频| 成人免费看的视频| 免费黄色在线视频| 日本一区二区三区视频视频| 久久久久久视频| 亚洲国产一二三| 97久久久久久久| 欧美三级在线看| 国产激情无套内精对白视频| 精品国产乱码久久久久久图片| 天堂在线一二区| 在线电影欧美日韩一区二区私密| a级毛片免费观看在线| 午夜精品美女自拍福到在线| 神马久久资源| 91免费视频网站| 色天下一区二区三区| 亚洲精美视频| 午夜日韩在线| 久久综合久久色| 国产精品一区在线| 中文字幕 亚洲一区| 国产精品美女久久久久高潮| 免费在线观看一级片| 色婷婷av一区二区三区gif| 97人妻精品一区二区三区软件| 亚洲丁香婷深爱综合| 91视频在线观看| 国自产精品手机在线观看视频| 91tv亚洲精品香蕉国产一区| 成人动漫在线视频| 日韩中文欧美| 国产肥臀一区二区福利视频| 精品亚洲国内自在自线福利| 91视频啊啊啊| 亚洲另类一区二区| 亚洲免费视频二区| 亚洲国产高潮在线观看| 麻豆av在线免费看| 国产成人在线播放| 国产乱人伦丫前精品视频| 中文字幕一区二区三区在线乱码| 国产日韩欧美| 国产大学生av| 国产精品视频你懂的| 中文字幕超碰在线| 日韩久久精品一区| 免费a级毛片在线播放| 国产精品av在线播放| 麻豆精品99| 欧美做暖暖视频| 久久国产人妖系列| 日韩精品无码一区二区三区久久久| 亚洲宅男天堂在线观看无病毒| 中文字幕精品一区二区精| 亚洲国产欧美一区二区三区同亚洲 | 亚洲一区二区影视| 国产视频精品久久久| 韩国成人免费视频| 91精品在线国产| 日韩成人影院| 香蕉视频网站入口| 久久人人97超碰com| 欧美亚洲精品天堂| 精品国产123| av手机在线观看| 91在线视频精品| 午夜精品毛片| 中文字幕资源在线观看| 91丨porny丨在线中文 | 日本一区网站| 99亚洲一区二区| 李丽珍裸体午夜理伦片| 亚洲综合一区二区三区| 精品人妻一区二区三区日产乱码| 久久综合伊人77777| 欧美天堂一区| 亚洲一区二区三区四区中文| 美女www一区二区| 久久国产柳州莫菁门| 欧美在线观看视频在线| 黄色片在线播放| 日本伊人精品一区二区三区介绍| 亚洲电影一级片| 国产福利视频在线播放| 91麻豆国产香蕉久久精品| 性无码专区无码| 亚洲人成电影在线| 素人一区二区三区| 天天综合狠狠精品| 精品在线免费观看| 男的操女的网站| 日韩欧美第一区| 美女精品视频| 久久国产精品一区二区三区四区 | 中文 日韩 欧美| 亚洲美女淫视频| 免费观看国产视频| 男人晚上看的视频| 欧美体内谢she精2性欧美| 五月婷婷狠狠干| 国产精品高潮呻吟久久av野狼| 狠狠色丁香婷婷综合影院| 中文久久久久久| 日韩毛片一二三区| 亚洲国产精品久久久久久久| 97免费视频在线| 蜜桃一区二区三区| 欧美午夜aaaaaa免费视频| 综合久久久久久| 天天综合网在线观看| 国产999精品视频| 天天综合一区| 五十路六十路七十路熟婆| 在线国产电影不卡| jizz性欧美10| 国产成人亚洲综合a∨猫咪| 日本一卡二卡在线播放| 日韩欧美中文字幕一区| 欧亚在线中文字幕免费| 无遮挡亚洲一区| 国产91丝袜在线18| 国产熟妇一区二区三区四区| 久久精品成人动漫| 欧美日韩看看2015永久免费| 污网站免费在线| 午夜精品在线视频一区| 欧美jizz18性欧美| 精品无人区一区二区三区| 蜜桃精品视频在线观看| 久久婷婷综合国产| 一区二区三区亚洲| 亚洲精品一区二区三区中文字幕| 久久精品国产精品亚洲色婷婷| 亚洲欧美视频在线观看视频| 四虎在线观看| 亚洲中国色老太|