精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

久久奇米777| 日韩精品一区二区三区免费观影 | 天天爽天天爽天天爽| 国产成年精品| 欧美日韩国产精品一区二区三区四区| 日韩videos| 99久久久久久久| 欧美一级久久| 欧美精品生活片| 欧美黄色激情视频| 亚洲一区二区三区在线免费| 色综合一区二区三区| 欧美少妇在线观看| 91社区在线观看播放| 国产福利一区二区| 国产精品欧美在线| 日韩少妇裸体做爰视频| 性欧美69xoxoxoxo| 亚洲人成电影网站色xx| 亚洲色图欧美另类| 欧美videos粗暴| 色综合久久久网| 久久久久久久香蕉| 米奇777四色精品人人爽| 久久久久久久综合狠狠综合| 成人在线看片| 国产麻豆免费视频| 美国三级日本三级久久99 | 国产无码精品在线观看| 亚洲成人av| 色悠悠久久88| 波多野结衣家庭教师在线观看 | 亚洲男人av在线| 国产精品嫩草69影院| 24小时成人在线视频| 在线亚洲一区观看| 激情综合在线观看| heyzo在线欧美播放| 亚洲综合网站在线观看| 中文字幕一区二区三区乱码| 国产在线视频网站| 国产午夜精品一区二区三区嫩草| 国产日韩久久| 五月天婷婷社区| 99亚偷拍自图区亚洲| 国产嫩草一区二区三区在线观看| www.蜜桃av.com| 国产精品综合网| 亚洲iv一区二区三区| 国产精品国产三级国产aⅴ| 久久精品国产成人一区二区三区 | 中国女人一级一次看片| 久久中文欧美| 国产成人在线亚洲欧美| www.久久视频| 日韩国产欧美一区二区三区| 国产成人精品免费久久久久| 日批视频免费在线观看| 久久精品一本| 国产精品入口尤物| 国产一区二区小视频| 韩国三级中文字幕hd久久精品| 国产一区二区视频在线观看| 国产精品欧美激情在线| 国产一区二区三区国产| dy888夜精品国产专区| 精品人妻一区二区三区换脸明星| 国产黑丝在线一区二区三区| 高清视频一区二区三区| 婷婷伊人综合中文字幕| 久久综合国产精品| 亚洲欧美日韩国产yyy| 黄色国产网站在线播放| 一二三区精品福利视频| 久久综合九色综合88i| 自由日本语热亚洲人| 欧美视频三区在线播放| 国产高清av片| 日韩av黄色在线| 中文一区二区视频| 久久免费在线观看视频| 亚洲一区国产| 国产精品视频xxxx| 国产极品久久久| 99精品国产91久久久久久| 日韩免费一区二区三区| a视频在线免费看| 欧美日韩亚洲精品一区二区三区| 狠狠躁狠狠躁视频专区| 亚洲91网站| 亚洲天堂网站在线观看视频| 亚洲一级生活片| 99在线观看免费视频精品观看| 国产精品成人国产乱一区| 国产精品一区二区三区在线免费观看 | 激情综合网站| 久久国产精品久久国产精品| 青草视频在线观看免费| 国内精品不卡在线| 欧美高清视频一区| 在线中文字幕视频观看| 在线观看网站黄不卡| 台湾佬美性中文| 国产一区二区三区日韩精品 | 久草视频手机在线观看| 日韩精品亚洲专区| 国产高清精品一区二区三区| 在线观看h片| 色综合久久88色综合天天6| 国产精品999.| 日产午夜精品一线二线三线| 国内揄拍国内精品少妇国语| 97超碰人人模人人人爽人人爱| 99久久精品国产导航| 一级黄色片播放| 成人在线免费电影网站| 日韩av综合中文字幕| 国产三级国产精品国产国在线观看| 午夜亚洲伦理| 国产精品加勒比| 菠萝菠萝蜜在线观看| 欧美色爱综合网| 李宗瑞91在线正在播放| 好吊日精品视频| 亚洲一区二区三区香蕉| 在线播放日本| 欧美综合在线视频| 亚洲欧美视频在线播放| 亚洲性图久久| 2022国产精品| 国产精品va在线观看视色 | 国产91网红主播在线观看| 国产综合在线播放| 亚洲精品欧美在线| 肉色超薄丝袜脚交| 91精品国产91久久久久久黑人| 国产精品视频网址| av网站在线播放| 欧美在线短视频| 91网站免费视频| 亚洲女同同性videoxma| 久99久在线| 牛牛精品一区二区| 日韩av有码在线| 日韩av免费网址| 97久久精品人人爽人人爽蜜臀| 日本阿v视频在线观看| 9l视频自拍九色9l视频成人| 久久久久国产视频| 六月婷婷中文字幕| 精品国产91乱高清在线观看| 免费的av网站| 亚洲中字黄色| 日韩和欧美的一区二区| 国产精品美女午夜爽爽| 日韩亚洲欧美成人| 国产成人精品一区二三区四区五区| 亚洲色图清纯唯美| 中文字幕国产免费| 亚洲电影影音先锋| 国产精品传媒毛片三区| 一二三四视频在线中文| 亚洲精品少妇网址| 中文字幕在线观看视频一区| 成人欧美一区二区三区黑人麻豆 | 91色综合久久久久婷婷| 国产精品亚洲二区在线观看| 狠狠综合久久av一区二区蜜桃 | 99久久久无码国产精品6| 久草成人资源| 91久久在线观看| 国产99re66在线视频| 日韩精品免费在线| 中文字幕人妻一区二区在线视频| 国产精品久久久久三级| 青娱乐精品在线| 亚洲三级国产| 色涩成人影视在线播放| 国产乱码精品一区二区三区亚洲人 | 日韩一区二区视频| 精品国产一区二区三区四| 国产精品网友自拍| 色悠悠在线视频| 日韩在线a电影| 麻豆映画在线观看| 亚洲成aⅴ人片久久青草影院| 国产狼人综合免费视频| 国产粉嫩在线观看| 深夜成人在线观看| 亚洲欧美日韩综合在线| 欧美人与z0zoxxxx视频| 日本天堂在线视频| 国产精品素人一区二区| 男人网站在线观看| 老司机精品视频导航| 欧美狂野激情性xxxx在线观| 日本电影一区二区| 国产一区二区三区高清视频| 日韩综合久久| 青青久久aⅴ北条麻妃| 超碰在线观看免费版| 亚洲偷欧美偷国内偷| 欧美在线精品一区二区三区| 欧美日韩一区 二区 三区 久久精品| 精品在线视频免费观看| 国产精品国产三级国产专播品爱网| 2018国产精品| 久久99国内精品| www.四虎成人| 1024成人| 国产高潮呻吟久久久| 精品国产美女| 久久久久久久久久久久久9999| 99re8精品视频在线观看| 欧美中文字幕第一页| 欧美性受ⅹ╳╳╳黑人a性爽| 正在播放亚洲1区| 天堂影院在线| 亚洲第一级黄色片| 亚洲精品.www| 在线综合亚洲欧美在线视频| 毛片在线免费播放| 午夜欧美在线一二页| 唐朝av高清盛宴| 日韩一区在线看| 内射毛片内射国产夫妻| 91亚洲男人天堂| 男人的天堂影院| 国产a久久麻豆| 日韩成人av免费| 免费观看久久久4p| 一区二区在线播放视频| 免费一区视频| www国产精品内射老熟女| 黑人一区二区| 欧美一级欧美一级| 国语对白精品一区二区| www.国产亚洲| 欧美色图首页| 丁香色欲久久久久久综合网| 中文字幕乱码亚洲无线精品一区 | 无码人妻精品一区二区三区温州| 国产美女视频一区| 女王人厕视频2ⅴk| 国产成人亚洲综合色影视| 日韩欧美色视频| 国内精品自线一区二区三区视频| 欧美成人乱码一二三四区免费| 蜜臀av亚洲一区中文字幕| 色播五月综合网| 国精产品一区一区三区mba视频 | 国产成人中文字幕| 69av.com| 亚洲男人的天堂在线观看| 国产日韩欧美在线观看视频| 亚洲女人小视频在线观看| 国产97免费视频| 亚洲一区在线观看免费观看电影高清| 日韩女优一区二区| 一区二区三区不卡视频| 国产一级片免费观看| 午夜av一区二区| 成人毛片一区二区三区| 欧美日韩国产高清一区二区三区| 影音先锋国产在线| 欧美一级欧美三级在线观看| 亚洲黄色小说网| 国产丝袜一区视频在线观看| 四虎精品成人影院观看地址| 亚洲图片欧洲图片av| 成人video亚洲精品| 欧美激情一区二区三区在线视频观看 | 网站一区二区三区| 久久er99热精品一区二区| 久久久国产精品久久久| 91一区二区三区在线观看| av网在线播放| 一区二区三区视频在线看| 国产精品一区二区三区四| 欧美色窝79yyyycom| 亚洲精品无码久久久| 亚洲欧美国产一本综合首页| 日本暖暖在线视频| 久久久久久久久久久91| 久久xxx视频| 高清av免费一区中文字幕| 国产一区二区电影在线观看| 国产香蕉一区二区三区| 久久aⅴ乱码一区二区三区| 天堂在线一区二区三区| 91女神在线视频| 日本中文在线视频| 日韩欧美在线网址| 久久综合中文色婷婷| 成人免费无遮挡无码黄漫视频| 中文字幕在线观看网站| 免费一级片91| 久久久国产91| 五月天婷婷在线视频| 欧美激情在线一区| 91成人抖音| 激情一区二区三区| 久久精品久久久| 色欲av无码一区二区人妻| 国产激情91久久精品导航| 波多野吉衣中文字幕| 亚洲精品国产精品乱码不99 | 在线观看91av| 亚洲欧美综合在线观看| 久热精品视频在线| 国产成+人+综合+亚洲欧美| 国产三区精品| 欧美精品三级| 99re精彩视频| 国产天堂亚洲国产碰碰| 日韩欧美大片在线观看| 日韩欧美一级二级| 欧美精品电影| 国产精品wwwwww| 欧美男gay| 伊人成色综合网| 从欧美一区二区三区| 四虎免费在线视频| 9191国产精品| 最新97超碰在线| 国产精品久久久久福利| 亚洲视频分类| 成人小视频在线看| 91丨九色丨蝌蚪丨老版| 国产成人精品av久久| 欧美一级高清片| 国产视频一区二区| 成人av在线网址| 久久精品国产68国产精品亚洲| 成人小视频在线看| 久久久www成人免费无遮挡大片| 欧美在线观看不卡| 亚洲免费电影在线观看| 欧美成人免费电影| 日韩精品欧美专区| 久久国产欧美| a级在线免费观看| 91福利在线播放| 成人在线免费电影| 国产精品一区二区三区免费视频| 九九综合九九| 亚洲综合在线网站| 国产免费久久精品| 在线播放国产一区| 日韩一区视频在线| 91精品国产一区二区在线观看| 一区二区三区四区五区视频| 久草精品在线观看| 亚洲成人生活片| 精品剧情v国产在线观看在线| 国产探花视频在线观看| 国产视色精品亚洲一区二区| 国产日韩欧美三级| 免费看污片的网站| 欧美视频在线播放| 国产精品一卡二卡三卡| 国产经典一区二区三区| 性8sex亚洲区入口| 国产精品久久久久久久av| 精品视频1区2区| 污视频免费在线观看| 国精产品一区二区| 日韩精品免费视频人成| 二区三区四区视频| 亚洲精品一区二区三区精华液| 涩涩视频网站在线观看| 亚洲高清不卡一区| 国产精品一级在线| 国产乡下妇女做爰毛片| 精品亚洲aⅴ在线观看| 日本成人一区二区| 欧美视频在线观看视频| 久久久久久影视| 国产不卡av在线播放| 2019中文在线观看| 久久亚洲影视| 日韩综合第一页| 欧美亚洲高清一区二区三区不卡| 综合久久2o19| 蜜桃传媒一区二区| 韩日精品视频一区| 欧美精品一二三四区| 久久亚洲精品国产亚洲老地址| 欧美亚洲大陆| 亚洲理论中文字幕| 欧美性xxxx极品hd满灌| 美女免费久久| 欧美精品中文字幕一区二区| 国产麻豆精品在线观看| 久草手机在线视频| 久久精品视频在线观看| 精品一区亚洲| 久久久久亚洲AV成人网人人小说| 在线视频中文字幕一区二区| 成人在线高清免费|