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

設計模式系列—抽象工廠模式

系統
本篇和大家一起來學習抽象工廠模式相關內容。

 前言

  • 23種設計模式速記
  • 單例(singleton)模式
  • 工廠方法(factory method)模式

前面說完了工廠方法模式,我們發現工廠方法模式存在一個嚴重的問題:一個具體工廠只能創建一類產品 ,而實際過程中一個工廠往往需要生產多類產品。為了解決上述問題,可以使用抽象工廠模式,本篇和大家一起來學習抽象工廠模式相關內容。

模式定義
抽象工廠模式,即Abstract Factory Pattern,提供一個創建一系列相關或相互依賴對象的接口,而無須指定它們具體的類;具體的工廠負責實現具體的產品實例。

抽象工廠模式是工廠方法模式的升級版本,工廠方法模式只生產一個等級的產品,而抽象工廠模式可生產多個等級的產品。

解決的問題
每個工廠只能創建一類產品

即工廠方法模式的缺點

模式組成
抽象工廠模式同工廠方法模式一樣,也是由抽象工廠、具體工廠、抽象產品和具體產品等 4 個要素構成,但抽象工廠中方法個數不同,抽象產品的個數也不同。現在我們來分析其基本結構和實現方法。

使用步驟

  1. 創建抽象工廠類,定義具體工廠的公共接口;
  2. 創建抽象產品族類 ,定義抽象產品的公共接口;
  3. 創建抽象產品類 (繼承抽象產品族類),定義具體產品的公共接口;
  4. 創建具體產品類(繼承抽象產品類) & 定義生產的具體產品;
  5. 創建具體工廠類(繼承抽象工廠類),定義創建對應具體產品實例的方法;

客戶端通過實例化具體的工廠類,并調用其創建不同目標產品的方法創建不同具體產品類的實例
實例說明
實例概況

  • 背景:隔壁老王有兩間塑料加工廠(A廠僅生產容器類產品;B廠僅生產模具類產品);隨著客戶需求的變化,A廠所在地的客戶需要也模具類產品,B廠所在地的客戶也需要容器類產品;
  • 沖突:沒有資源(資金+租位)在當地分別開設多一家注塑分廠
  • 解決方案:在原有的兩家塑料廠里增設生產需求的功能,即A廠能生產容器+模具產品;B廠間能生產模具+容器產品。

即抽象工廠模式

使用步驟

步驟1: 創建抽象工廠類,定義具體工廠的公共接口。

  1. abstract class Factory{ 
  2.     public abstract AbstractProduct ManufactureContainer(); 
  3.     public abstract AbstractProduct ManufactureMould(); 

步驟2: 創建抽象產品族類 ,定義具體產品的公共接口。

  1. abstract class AbstractProduct{ 
  2.     public abstract void method1(); 

步驟3: 創建抽象產品類 ,定義具體產品的公共接口。

  1. //容器產品抽象類 
  2. abstract class ContainerProduct extends AbstractProduct { 
  3.     @Override 
  4.     public abstract void method1(); 
  5.  
  6. //模具產品抽象類 
  7. abstract class MouldProduct extends AbstractProduct { 
  8.     @Override 
  9.     public abstract void method1(); 

步驟4: 創建具體產品類(繼承抽象產品類), 定義生產的具體產品。

  1. //容器產品A類 
  2. class ContainerProductA extends ContainerProduct{ 
  3.     @Override 
  4.     public void method1() { 
  5.         System.out.println("生產出了容器產品A"); 
  6.     } 
  7.  
  8. //容器產品B類 
  9. class ContainerProductB extends ContainerProduct{ 
  10.     @Override 
  11.     public void method1() { 
  12.         System.out.println("生產出了容器產品B"); 
  13.     } 
  14.  
  15. //模具產品A類 
  16. class MouldProductA extends MouldProduct{ 
  17.  
  18.     @Override 
  19.     public void method1() { 
  20.         System.out.println("生產出了模具產品A"); 
  21.     } 
  22.  
  23. //模具產品B類 
  24. class MouldProductB extends MouldProduct{ 
  25.  
  26.     @Override 
  27.     public void method1() { 
  28.         System.out.println("生產出了模具產品B"); 
  29.     } 

步驟5:創建具體工廠類(繼承抽象工廠類),定義創建對應具體產品實例的方法。

  1. //A廠 - 生產模具+容器產品 
  2. class FactoryA extends Factory{ 
  3.  
  4.     @Override 
  5.     public AbstractProduct ManufactureContainer() { 
  6.         return new ContainerProductA(); 
  7.     } 
  8.  
  9.     @Override 
  10.     public AbstractProduct ManufactureMould() { 
  11.         return new MouldProductA(); 
  12.     } 
  13.  
  14. //B廠 - 生產模具+容器產品 
  15. class FactoryB extends Factory{ 
  16.  
  17.     @Override 
  18.     public AbstractProduct ManufactureContainer() { 
  19.         return new ContainerProductB(); 
  20.     } 
  21.  
  22.     @Override 
  23.     public AbstractProduct ManufactureMould() { 
  24.         return new MouldProductB(); 
  25.     } 

步驟6:客戶端通過實例化具體的工廠類,并調用其創建不同目標產品的方法創建不同具體產品類的實例。

  1. public class AbstractFactoryPattern { 
  2.  
  3.     public static void main(String[] args){ 
  4.         FactoryA mFactoryA = new FactoryA(); 
  5.         FactoryB mFactoryB = new FactoryB(); 
  6.         //A廠當地客戶需要容器產品A 
  7.         mFactoryA.ManufactureContainer().method1(); 
  8.         //A廠當地客戶需要模具產品A 
  9.         mFactoryA.ManufactureMould().method1(); 
  10.  
  11.         //B廠當地客戶需要容器產品B 
  12.         mFactoryB.ManufactureContainer().method1(); 
  13.         //B廠當地客戶需要模具產品B 
  14.         mFactoryB.ManufactureMould().method1(); 
  15.  
  16.     } 

輸出結果

  1. 生產出了容器產品A 
  2. 生產出了模具產品A 
  3. 生產出了容器產品B 
  4. 生產出了模具產品B 

優點

  • 可以在類的內部對產品族中相關聯的多等級產品共同管理,而不必專門引入多個新的類來進行管理。
  • 當需要產品族時,抽象工廠可以保證客戶端始終只使用同一個產品的產品組。
  • 抽象工廠增強了程序的可擴展性,當增加一個新的產品族時,不需要修改原代碼,滿足開閉原則。

缺點
當產品族中需要增加一個新的產品時,所有的工廠類都需要進行修改。增加了系統的抽象性和理解難度。

這是因為抽象工廠接口中已經確定了可以被創建的產品集合,如果需要添加新產品,此時就必須去修改抽象工廠的接口,這樣就涉及到抽象工廠類的以及所有子類的改變,這樣也就違背了“開發——封閉”原則。

對于新的產品族符合開-閉原則;對于新的產品種類不符合開-閉原則,這一特性稱為開-閉原則的傾斜性。

應用場景
程序需要處理不同系列的相關產品,但是您不希望它依賴于這些產品的具體類時,可以使用抽象工廠。

源碼中的應用

  1. #JDK 
  2. java.sql.Connection 
  3. java.sql.Driver 
  4.  
  5. # mybatis 
  6. SqlSessionFactory 

java.sql.Connection

  1. public interface Connection  extends Wrapper, AutoCloseable { 
  2.  //...      
  3.      //返回普通的sql執行器 
  4.         Statement createStatement() throws SQLException; 
  5.   //返回具有參數化預編譯功能的sql執行器 
  6.      PreparedStatement prepareStatement(String sql) throws SQLException; 
  7.      //返回可以執行存儲過程的sql執行器 
  8.         CallableStatement prepareCall(String sql) throws SQLException;    
  9.     //...          

從上面的注釋就可以看出,這就是典型的抽象工廠接口,描述了不同的產品等級Statement、PreparedStatement、CallableStatement,它們都位于抽象接口Statement產品等級結構中。我們可以繼續尋找該抽象工廠接口的實現類。

以Mysql為例,可以找到Mysql對這個工廠接口的實現類ConnectionImpl,ConnectionImpl并不是直接實現了java.sql.Connection,而是通過實現自己擴展的MySQLConnection接口,該接口也是間接繼承了java.sql.Connection

  1. public class ConnectionImpl extends ConnectionPropertiesImpl implements MySQLConnection { 
  2.  //... 
  3.  
  4.  public java.sql.Statement createStatement() throws SQLException { 
  5.         return createStatement(DEFAULT_RESULT_SET_TYPE, DEFAULT_RESULT_SET_CONCURRENCY); 
  6.     } 
  7.     
  8.  public java.sql.PreparedStatement prepareStatement(String sql) throws SQLException { 
  9.         return prepareStatement(sql, DEFAULT_RESULT_SET_TYPE, DEFAULT_RESULT_SET_CONCURRENCY); 
  10.     } 
  11.      
  12.  public java.sql.CallableStatement prepareCall(String sql) throws SQLException { 
  13.  
  14.         return prepareCall(sql, DEFAULT_RESULT_SET_TYPE, DEFAULT_RESULT_SET_CONCURRENCY); 
  15.     } 
  16.   
  17.  //... 

以createStatement為例,跟蹤其調用代碼可以看到StatementImpl這個類就是實現了java.sql.Statement的具體產品類

  1. public java.sql.Statement createStatement(int resultSetType, int resultSetConcurrency) throws SQLException { 
  2.     checkClosed(); 
  3.  
  4.     StatementImpl stmt = new StatementImpl(getMultiHostSafeProxy(), this.database); 
  5.     stmt.setResultSetType(resultSetType); 
  6.     stmt.setResultSetConcurrency(resultSetConcurrency); 
  7.  
  8.     return stmt; 

SqlSessionFactory

  1. /** 
  2.  * Creates an {@link SqlSession} out of a connection or a DataSource 
  3.  *  
  4.  * @author Clinton Begin 
  5.  */ 
  6. public interface SqlSessionFactory { 
  7.  
  8.   SqlSession openSession(); 
  9.  
  10.   SqlSession openSession(boolean autoCommit); 
  11.   SqlSession openSession(Connection connection); 
  12.   SqlSession openSession(TransactionIsolationLevel level); 
  13.  
  14.   SqlSession openSession(ExecutorType execType); 
  15.   SqlSession openSession(ExecutorType execType, boolean autoCommit); 
  16.   SqlSession openSession(ExecutorType execType, TransactionIsolationLevel level); 
  17.   SqlSession openSession(ExecutorType execType, Connection connection); 
  18.  
  19.   Configuration getConfiguration(); 
  20.  

SqlSessionFactory也是抽象工廠接口,Configuration和SqlSession都是在不同的產品等級上。通過IDEA工具可以通過UML圖清晰得看到SqlSessionFactory的工廠實現類

以上兩個例子都和數據庫操作相關,同樣使用了抽象工廠模式。在jdbc中,客戶端通過Connection工廠獲取到Statement產品對象,然后通過該對象進行增刪改查操作,對于mybatis這種數據庫操縱框架而言(底層也是封裝了jdbc api)有異曲同工,通過SeqSessionFactory工廠獲取到SqlSession產品對象,然后進行增刪改查操作。

 

PS:以上代碼提交在 Github :

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

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

2021-09-29 13:53:17

抽象工廠模式

2022-01-12 13:33:25

工廠模式設計

2021-03-06 22:50:58

設計模式抽象

2009-01-15 10:55:29

JavaScript設計模式抽象工廠

2011-07-28 09:50:58

設計模式

2013-11-26 16:29:22

Android設計模式

2020-12-17 09:38:16

設計模式參數

2024-03-06 13:19:19

工廠模式Python函數

2024-09-14 08:24:44

設計模式抽象工廠模式JDK

2020-08-21 07:23:50

工廠模式設計

2011-11-17 16:03:05

Java工廠模式Clojure

2020-09-14 17:26:48

抽象工廠模式

2023-08-07 06:30:15

抽象工廠模式軟件設計模式

2021-07-06 08:59:18

抽象工廠模式

2010-04-19 09:30:00

工廠模式PHP設計模式

2020-11-03 13:05:18

命令模式

2020-11-04 08:54:54

狀態模式

2020-10-23 09:40:26

設計模式

2024-07-31 08:12:33

2010-10-09 09:25:35

Python工廠模式
點贊
收藏

51CTO技術棧公眾號

香蕉免费毛片视频| 热久久精品国产| 亚洲免费黄色片| 媚黑女一区二区| 精品国产拍在线观看| 精品人妻无码中文字幕18禁| 国产99在线| 国产精品素人一区二区| 国产精品久久精品国产| 亚洲大尺度在线观看| 欧美日韩精选| 中文字幕在线看视频国产欧美在线看完整| 波多野结衣三级视频| 日韩免费福利视频| 亚洲一区二区三区四区在线免费观看| 日本视频一区二区不卡| 亚洲精品一区二区三区四区| 日韩精品成人一区二区三区| 高清亚洲成在人网站天堂| 天堂网中文在线观看| 日韩三级视频| 亚洲精品一区二区三区精华液 | 亚洲黄色小说在线观看| 欧美aa在线| 亚洲啪啪综合av一区二区三区| 久久久久久久久久码影片| 国产精品一区二区三区在线免费观看| 国产精品一区毛片| 欧美放荡办公室videos4k| 我不卡一区二区| 林ゆな中文字幕一区二区| 日韩午夜在线影院| 色一情一区二区三区| 亚洲伦乱视频| 色婷婷综合久色| 国产素人在线观看| sm在线观看| 亚洲无人区一区| 可以在线看黄的网站| 一广人看www在线观看免费视频| 久久品道一品道久久精品| 国产亚洲一区在线播放| 精品人妻无码一区二区 | 精产国品一二三区| 91成人精品观看| 欧美另类一区二区三区| 日韩一级理论片| 网友自拍亚洲| 欧洲亚洲国产日韩| 国产视频一区二区三区在线播放 | 亚洲精品123区| 久久久久久91| 国产亚洲欧美精品久久久久久| 亚洲天堂一区二区三区四区| 色噜噜狠狠色综合网图区| 亚洲色图日韩精品| 国产精品久久占久久| 日韩中文字幕不卡视频| a一级免费视频| 亚洲区综合中文字幕日日| 欧美超级免费视 在线| 国产一区二区播放| 国产精品mv在线观看| 久久久久国产一区二区三区| 亚洲视频免费播放| 久久久成人网| 国产在线精品自拍| 国产精品自偷自拍| 国产成人综合网站| 久久国产精品高清| 岛国视频免费在线观看| 中文字幕一区二区三区色视频| 国产又粗又爽又黄的视频| 欧美大片黄色| 一本到高清视频免费精品| 午夜dv内射一区二区| 国产精品久久久久77777丨| 欧美日本在线看| 日韩高清一二三区| 九九精品久久| 久久精彩免费视频| 日韩xxxxxxxxx| 噜噜噜躁狠狠躁狠狠精品视频| 国产精品日韩久久久久| 国产三级三级在线观看| 国产精品综合二区| 久久精品ww人人做人人爽| 国产h在线观看| 亚洲免费在线视频| 91视频最新入口| 成人在线日韩| 亚洲精品之草原avav久久| 日本不卡一二区| 99热这里只有精品8| 国产精品视频大全| 黄色三级网站在线观看| 中文字幕乱码久久午夜不卡 | 蜜桃精品视频在线| 成人自拍爱视频| 成a人v在线播放| 亚洲成a人片在线观看中文| 爱情岛论坛vip永久入口| 亚洲国产aⅴ精品一区二区| 亚洲女人天堂视频| 欧美xxxx黑人xyx性爽| 久久综合影音| 国产精品香蕉视屏| av在线免费一区| 精品久久久久久久中文字幕| 国产又粗又长又爽又黄的视频| 亚洲激情播播| 欧美激情视频在线| 一区二区三区免费观看视频| 99re亚洲国产精品| 成年在线观看视频| 亚洲精品三区| 国产一区二区三区在线看| 99免费在线观看| 极品尤物av久久免费看| 日本一区二区精品视频| 不卡一本毛片| 精品日韩成人av| 神马久久精品综合| 免费观看成人鲁鲁鲁鲁鲁视频| 久久精品国产精品国产精品污| 天堂av在线电影| 欧美精品 国产精品| 极品蜜桃臀肥臀-x88av| 亚洲免费影视| 久久久久久久久一区| 欧美xxxx做受欧美88bbw| 欧美一级黄色片| 亚洲人与黑人屁股眼交| 免费日本视频一区| 日本最新一区二区三区视频观看| 白浆在线视频| 亚洲精品一区二区三区福利| 欧美激情一区二区视频| 国产在线观看一区二区| 中文字幕欧美日韩一区二区三区 | 欧美日韩二区三区| 精品一区二区三区蜜桃在线| 日韩在线a电影| 秋霞久久久久久一区二区| 亚洲性受xxx喷奶水| 精品亚洲一区二区三区在线观看 | 日韩电影中文字幕在线观看| 国产真实乱人偷精品视频| 国产91丝袜在线18| 日韩欧美不卡在线| 国产精品国产| 欧美在线欧美在线| 国产在线三区| 欧美色欧美亚洲另类二区| 日韩黄色中文字幕| 狠狠久久亚洲欧美| 好吊色这里只有精品| 91亚洲无吗| 97国产在线视频| 欧洲亚洲精品视频| 欧美午夜精品一区二区三区| 国产传媒视频在线| 国产一级精品在线| 国产精彩视频一区二区| 婷婷成人综合| 国产精品成人va在线观看| 日本激情视频在线观看| 欧美一二三四在线| 国产无码精品久久久| 久久一日本道色综合| 杨幂毛片午夜性生毛片| 99久久视频| 国产高清精品一区二区三区| 一区二区三区短视频| 日韩有码视频在线| 免费观看黄色一级视频| 日本精品一级二级| 欧美日韩在线视频免费| 91色视频在线| 日本国产一级片| 国产精品久久久亚洲一区| 特级西西444www大精品视频| 精品久久国产一区| 91高清免费视频| 欧美成人xxx| 亚洲国产一区二区三区四区| 欧美性受xxx黑人xyx性爽| 亚洲猫色日本管| 国产全是老熟女太爽了| 国内精品伊人久久久久av一坑| 久久久久99精品成人片| 日韩欧美午夜| 国产在线一区二区三区欧美| 欧美成a人片免费观看久久五月天| 欧美激情第一页xxx| 岛国在线视频免费看| 欧美精品一区二区久久婷婷| 国产情侣免费视频| 亚洲电影一级黄| 小向美奈子av| 久久久精品一品道一区| 少妇高潮一69aⅹ| 人人精品人人爱| 欧美不卡在线播放| 91精品久久久久久久久久不卡| 欧美精品一区三区在线观看| 在线精品国产亚洲| 成人国产精品av| 免费成人动漫| 午夜美女久久久久爽久久| 黄色免费网站在线| 国产一区二区动漫| 无码h黄肉3d动漫在线观看| 欧美精品一卡两卡| 国产九色91回来了| 狠狠躁夜夜躁人人爽超碰91| 欧美日韩人妻精品一区二区三区| 国产精品网站导航| 无码少妇精品一区二区免费动态| youjizz国产精品| 青娱乐国产精品视频| 精品在线观看视频| the porn av| 日韩中文字幕不卡| 1024av视频| 亚洲青涩在线| 亚洲色成人www永久在线观看| 五月久久久综合一区二区小说| 日韩av大全| 蜜桃tv一区二区三区| 国精产品99永久一区一区| 草莓视频一区二区三区| 成人午夜电影在线播放| 网站一区二区| 97视频热人人精品| 欧美激情精品| www.成人三级视频| 136福利精品导航| 99porn视频在线| 在线一区二区三区视频| 亚洲专区在线视频| 精品中文视频| 99国精产品一二二线| 国产麻豆一区二区三区| 91精品久久久久久久| 国产69精品久久久久按摩| 国产精品老女人精品视频| 国产经典一区| 国产精品久久久久不卡| 国产成人77亚洲精品www| 91精品久久久久久久| 精品三级国产| 国产乱码精品一区二区三区中文 | 国产精品久久久久久免费免熟| 欧美日韩国产三级| 国产乱淫a∨片免费观看| 欧美一级黄色大片| 欧美视频一二区| 亚洲精品在线视频| 在线观看av黄网站永久| 欧美成人剧情片在线观看| 欧美人与性动交α欧美精品图片| 欧美大片在线看免费观看| 成人性生交大片免费看网站 | 大伊香蕉精品在线品播放| 国产亚洲一区二区三区在线播放| 日韩影视高清在线观看| 日韩色妇久久av| 亚洲国产精品日韩专区av有中文| 日本香蕉视频在线观看| 在线综合亚洲| 欧美一级特黄a| 国产成人亚洲综合a∨婷婷| 国产伦精品一区二区三区妓女 | 精品亚洲国产视频| 不卡在线视频| 久久久久久久97| 性欧美hd调教| 51国偷自产一区二区三区的来源| 精品国内亚洲2022精品成人| 日韩av一区二区三区美女毛片| 艳女tv在线观看国产一区| av之家在线观看| 久久99精品久久久久| 91精品又粗又猛又爽| 国产亚洲欧美在线| 强乱中文字幕av一区乱码| 一本大道久久精品懂色aⅴ| 国产日韩欧美一区二区东京热| 亚洲激情自拍图| 日本免费中文字幕在线| 久久免费少妇高潮久久精品99| 欧美影视资讯| 成人一区二区三区四区| 久久人体视频| 欧美视频在线播放一区| 精品无码三级在线观看视频| 熟女少妇一区二区三区| 亚洲精品视频免费观看| 久久国产乱子伦精品| 日韩欧美一卡二卡| 成人激情电影在线看| 久久久久这里只有精品| 四虎精品在线观看| 欧美动漫一区二区| 国产精品大片免费观看| 久久久777精品电影网影网 | 九九热精品视频在线观看| 日韩精品一区二区三区四| 秋霞电影网一区二区| 给我免费观看片在线电影的| 日韩一区日韩二区| 欧美brazzers| 日韩成人性视频| 日本成人不卡| 92看片淫黄大片看国产片| 成人高清av| 最近免费中文字幕中文高清百度| 粉嫩av一区二区三区在线播放| 日本在线观看网址| 91精品福利视频| 视频二区在线| 久久久久成人网| 一区二区三区亚洲变态调教大结局| 亚洲一区二区三区精品视频| 日韩精品一级中文字幕精品视频免费观看 | 黄色日韩网站| 日韩一区二区三区高清| 久久久www| 三级网站在线免费观看| 午夜精品久久久久久久99樱桃| 午夜精品久久久久久久爽| 久久久电影免费观看完整版| 日韩成人高清| 四虎一区二区| 免费精品视频最新在线| 三区四区在线观看| 欧美亚洲动漫制服丝袜| 国产一级网站视频在线| 国产精品999999| 成人直播大秀| 亚洲精品20p| 亚洲欧美偷拍另类a∨色屁股| 国产又粗又黄又爽| 久久精品国产精品| 欧洲大片精品免费永久看nba| 中国一级大黄大黄大色毛片| 国产在线精品一区二区不卡了| 国产高清视频免费在线观看| 欧美电影在线免费观看| 中文字幕在线观看网站| av一区二区三区在线观看| 日韩视频三区| 91视频免费观看网站| 欧美在线一区二区三区| 午夜在线播放| 91久久精品www人人做人人爽 | 久久久在线观看| 国产欧美自拍一区| 欧美激情成人网| 国产精品国产三级国产专播品爱网| 亚洲图片在线播放| 美女久久久久久久久久久| 国产欧美一区二区三区米奇| 久久久噜噜噜www成人网| 国产日韩精品一区二区三区| 在线观看中文字幕网站| 久久视频在线看| 久久久久97| 黄色国产小视频| 亚洲日本电影在线| 人妻少妇精品无码专区久久| 国产成人97精品免费看片| 午夜欧美在线| 屁屁影院国产第一页| 欧美在线观看一二区| 国产成人高清精品| 久久国产一区| 国内精品久久久久影院一蜜桃| 久久久久久久黄色| 亚洲性夜色噜噜噜7777| 韩国三级大全久久网站| 欧美视频在线播放一区| 中文字幕在线不卡视频| 视频污在线观看| 91九色视频在线| 亚洲免费网址| 久久久久亚洲AV成人| 亚洲深夜福利网站| 日韩在线成人| 簧片在线免费看| 午夜精品福利一区二区蜜股av| 搞黄视频免费在线观看| 国产精品三区四区| 久久99国内精品| 中文字幕av影院| 久久久人成影片一区二区三区| 国内精品久久久久久99蜜桃| 国产在线a视频| 欧美日韩高清一区二区三区|