日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

一些工厂实例

發布時間:2023/12/3 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一些工厂实例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我時不時地發現自己摸索了一些舊的代碼,以找到示例“我在哪里做過工廠一樣的事情”。

上周再次發生這種情況時,我決定只查找所有示例,并創建一個示例項目和有關它的博客文章。

所以在這篇文章中,我:

  • 從簡單的“原始” Java SE工廠示例開始
  • 然后使用Java SE SPI
  • Java SE上的CDI
  • Java EE上的 CDI
  • Java EE上的EJB
  • Java SE上的動態SPI
  • 最后是Java EE上的SPI

這個例子

這個示例應用程序是一個非常簡單的“ Hello World”,您可以輸入名稱,并且有多種表達問候的方法。

Greeting Service獲取Greeting Factory的實例。 然后,它可以按名稱要求工廠提供Greeting (接口),然后工廠將返回正確的實現。

有3種具體的實現方式:

  • English將打招呼“好日子名字” 。
  • Afrikaans將打招呼“ Goeie dag name” 。 (請參閱https://www.youtube.com/watch?v=CtxB4sbV0pA )
  • Bugs Bunny會打招呼“ Eeee, 叫什么名字 ?” (請參閱https://www.youtube.com/watch?v=UeVtZjGII-I )

Github中提供了此博客的所有源代碼 :

git clone https://github.com/phillip-kruger/factories-example

問候界面:

public interface Greeting {public String getName();public String sayHello(String to);}

香草

這個基本的Java SE應用程序有一個主要方法,該方法可讓您傳遞名稱和希望打招呼的方式。

工廠是獲得正確實現的基本if-statement :

public Greeting getGreeting(String name){if(name.equalsIgnoreCase("BugsBunny")){return new BugsBunny();}else if(name.equalsIgnoreCase("Afrikaans")){return new Afrikaans();}else {return new English();}}

一個具體的實現示例, 英語 :

public class English implements Greeting {@Overridepublic String sayHello(String to) {return "Good day " + to + ".";}@Overridepublic String getName() {return "English";}}

運行示例:

vanilla文件夾中:

mvn clean install

這將構建項目并運行該應用程序。 日志將輸出:

SEVERE: Good day Phillip.Goeie dag Phillip.Eeee, what's up Phillip ?

您也可以在Maven之外運行此命令:

java -jar target/vanilla-1.0.0-SNAPSHOT.jar World BugsBunnySEVERE: Eeee, what's up World ?

另見

  • https://alvinalexander.com/java/java-factory-pattern-example

服務提供商接口(SPI)

上面的示例意味著我可以非常輕松地添加另一個實現,并在詢問時更新if statement以返回該實現。

但是,我們要改進的是if-statement 。 我們希望可以在不修改現有代碼的情況下添加新的實現。 我要做的就是添加新的實現。

SPI是Java SE的一部分,是允許您構建可插入擴展的API。

將應用程序分解為模塊。

我們要做的第一件事是將應用程序分解為模塊 :

  • API –這將包含Greeting接口(我們的合同)
  • 引擎–其中將包含服務和工廠(以及默認的英語實現)
  • 其他實現–所有其他實現都變成了自己的模塊(因此,一種用于南非荷蘭語,另一種用于Bugs Bunny等)

這已經意味著我可以通過創建一個新模塊來添加新的實現,而不必觸摸代碼,只需更新依賴項即可:

<dependencies><dependency><groupId>${project.groupId}</groupId><artifactId>spi-api</artifactId><version>${project.version}</version></dependency><dependency><groupId>${project.groupId}</groupId><artifactId>spi-impl-afrikaans</artifactId><version>${project.version}</version></dependency><dependency><groupId>${project.groupId}</groupId><artifactId>spi-impl-bugsbunny</artifactId><version>${project.version}</version></dependency></dependencies>

映射文件

具體的實現需要通過在/src/main/resources/META-INF/services/添加一個文件com.github.phillipkruger.factory.api.Greeting (接口的全限定名),將其Greeting類注冊為實現。 )

文件的內容是實現的名稱,例如Bugs Bunny :

com.github.phillipkruger.factory.impl.BugsBunny

該工廠

工廠現在需要獲取所有Greetings實例:

ServiceLoader<Greeting> loader = ServiceLoader.load(Greeting.class);Iterator<Greeting> greetingIterator = loader.iterator();while (greetingIterator.hasNext()) {Greeting greeting = greetingIterator.next();loadedGreetings.put(greeting.getName(), greeting);}

現在我們擺脫了工廠中的if-statement 。

運行示例:

spi文件夾中:

mvn clean install

這將構建項目并運行該應用程序。 日志將輸出:

SEVERE: Good day Phillip.Goeie dag Phillip.Eeee, what's up Phillip ?

您也可以在Maven之外運行此命令:

java -jar spi-engine/target/spi-engine-1.0.0-SNAPSHOT-jar-with-dependencies.jar Johny AfrikaansSEVERE: Goeie dag Johny.

另見

  • https://docs.oracle.com/javase/tutorial/sound/SPI-intro.html

上下文和依賴注入(CDI)

最新版本的CDI允許您在Java SE中使用CDI。 為了創建工廠,我們將創建自己的注釋作為稱為GreetingProvider的API的一部分:

@Qualifier@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.TYPE)public @interface GreetingProvider {String value();}

value是實現的名稱。

以上的文字實現 :

@AllArgsConstructorpublic class GreetingProviderLiteral extends AnnotationLiteral<GreetingProvider> implements GreetingProvider {private final String name;@Overridepublic String value() {return this.name;}}

這將允許我們使用@GreetingProvider注釋任何具體的實現(現在是RequestScoped CDI Bean),例如英語:

@GreetingProvider("English")@RequestScopedpublic class English implements Greeting {@Overridepublic String sayHello(String to) {return "Good day " + to + ".";}@Overridepublic String getName() {return "English";}}

工廠更改以查找所有@GreetingProvider類:

public class GreetingFactory {@Inject @Anyprivate Instance<Greeting> greetings;public Greeting getGreeting(String name) {Instance<Greeting> instance = greetings.select(new GreetingProviderLiteral(name));if(!instance.isUnsatisfied()){Greeting provider = instance.get();return provider;}else{return new English();}}}

因此,現在我們不再需要SPI映射文件,工廠中沒有if-statement ,但是我們仍然必須更新依賴項以包含所需的所有實現。

運行示例:

cdi文件夾中:

mvn clean install

這將構建項目并運行該應用程序。 日志將輸出:

SEVERE: Good day Phillip.Goeie dag Phillip.Eeee, what's up Phillip ?

您也可以在Maven之外運行此命令:

java -jar cdi-engine/target/cdi-engine-1.0.0-SNAPSHOT-jar-with-dependencies.jar Charmaine BugsBunnySEVERE: Eeee, what's up Charmaine ?

另見

  • http://www.mastertheboss.com/jboss-frameworks/cdi/building-a-cdi-2-standalone-java-application
  • http://www.adam-bien.com/roller/abien/entry/injecting_classes_in_java_se

Java EE上的CDI

我們還可以使用CDI在Application Server上創建解決方案。 現在,我們將入口點設為REST服務(而不是主要方法),因此我們需要創建并添加ApplicationConfig來啟用JAX-RS:

@ApplicationPath("/api")public class ApplicationConfig extends Application {}

GreetingService現在成為REST資源,使您可以執行GET ,將名稱作為PathParam傳遞,以及將可選方式作為QueryParam進行問候:

@Path("/")@Produces(MediaType.APPLICATION_JSON)public class GreetingService {@Injectprivate GreetingFactory factory;@GET@Path("{to}")public String sayHello(@PathParam("to") String to, @QueryParam("way") List<String> way){//....}}

工廠和帶注釋的RequestScoped CDI Bean實現與Java SE示例上的CDI完全相同。

運行示例:

該示例可以在3個不同的應用程序服務器上運行(為誠實起見)

  • 野蜂群
  • 開放自由
  • Payara Micro

(您不必下載,安裝或配置任何東西,Maven構建會做到這一點)

javaee-cdi文件夾中:

mvn clean install -P wildfly

要么

mvn clean install -P liberty

要么

mvn clean install -P payara

在所有3種情況下,maven都會:

  • 在部署了應用程序的情況下啟動應用程序服務器
  • 擊中2個REST網址:
    • http:// localhost:8080 / javaee-cdi-engine / api (此列表所有實現)
  • 關閉應用程序服務器(Payara除外)

因此,在日志中,您將看到(類似):

=============================================== ["BugsBunny","Afrikaans","English"] ============================================================================================== ["Eeee, what's up Phillip ?","Goeie dag Phillip.","Good day Phillip."] ===============================================

如果運行Payara,則服務器不會關閉,因此您也可以手動測試工廠:

wget -qO- http://localhost:8080/javaee-cdi-engine/api/Donald?way=BugsBunny["Eeee, what's up Donald ?"]

Java EE上的EJB

只是為了完成示例,這是在Java EE上使用EJB的方法(因此沒有CDI –因此也沒有自定義注釋)

我們僅使用JNDI查找命名的EJB。

GreetingService與Java EE CDI示例相同,因此我們仍然有一個REST入口點。 現在,具體的實現變為EJB,例如英語:

@Stateless@EJB(beanInterface = Greeting.class, beanName = "English", name = "English")public class English implements Greeting {@Overridepublic String sayHello(String to) {return "Good day " + to + ".";}@Overridepublic String getName() {return "English";}}

現在, 工廠將基于bean名稱進行JNDI查找:

@Log@Statelesspublic class GreetingFactory {@EJB(lookup = "java:module/English")private Greeting english; // defaultpublic Greeting getGreeting(String name) {Greeting g = lookup("java:module/" + name);if(g==null)return english;return g;}public List<Greeting> getAll(){List<Greeting> greetings = new ArrayList<>();try {InitialContext context = new InitialContext();NamingEnumeration<Binding> list = (NamingEnumeration<Binding>)context.listBindings("java:global/javaee-ejb-engine"); while (list.hasMore()) {Binding next = list.next();if(next.getName().endsWith(Greeting.class.getName())){Greeting g = lookup("java:global/javaee-ejb-engine/" + next.getName());if(g!=null && !greetings.contains(g))greetings.add(g);}}} catch (NamingException e) {throw new RuntimeException(e);} return greetings;}private Greeting lookup(String jndi){try {InitialContext context = new InitialContext();Object o = context.lookup(jndi);return (Greeting)o;} catch (NamingException e) {log.log(Level.SEVERE, "Could not lookup [{0}]", jndi);return null;} }}

運行示例:

與Java EE CDI示例類似,它在Wildfly Swarm , Open Liberty和Payara Micro上運行

javaee-ejb文件夾中:

mvn clean install -P wildfly

(或-P自由或-P payara)

在所有3種情況下,maven都會:

  • 在部署了應用程序的情況下啟動應用程序服務器
  • 擊中2個REST網址:
    • http:// localhost:8080 / javaee-ejb-engine / api (此列表列出了所有實現)
  • 關閉應用程序服務器(Payara除外)

因此,在日志中,您將看到(類似):

=============================================== ["BugsBunny","Afrikaans","English"] ============================================================================================== ["Eeee, what's up Phillip ?","Goeie dag Phillip.","Good day Phillip."] ===============================================

如果運行Payara,則服務器不會關閉,因此您也可以手動測試工廠:

wget -qO- http://localhost:8080/javaee-ejb-engine/api/Barney?way=Afrikaans["Goeie dag Barney."]

動態SPI

到目前為止,添加新實現時,我們唯一要做的就是創建包含Greeting實現的模塊,并更新pom.xml以包含新的依賴項。

接下來,讓我們看看如何動態加載新的實現(因此無需更新依賴項)。

實現完全類似于Java SE SPI示例,包括映射文件,但是現在我們可以刪除模塊作為pom.xml依賴項:

<dependencies><dependency><groupId>${project.groupId}</groupId><artifactId>dynamic-spi-api</artifactId><version>${project.version}</version></dependency><!-- This will be loaded dynamically<dependency><groupId>${project.groupId}</groupId><artifactId>dynamic-spi-impl-afrikaans</artifactId><version>${project.version}</version></dependency><dependency><groupId>${project.groupId}</groupId><artifactId>dynamic-spi-impl-bugsbunny</artifactId><version>${project.version}</version></dependency>--></dependencies>

工廠看起來像這樣:

public class GreetingFactory {private final Map<String,Greeting> loadedGreetings = new HashMap<>();public GreetingFactory(){URLClassLoader classloader = getURLClassLoader();ServiceLoader<Greeting> loader = ServiceLoader.load(Greeting.class, classloader);Iterator<Greeting> greetingIterator = loader.iterator();while (greetingIterator.hasNext()) {Greeting greeting = greetingIterator.next();loadedGreetings.put(greeting.getName(), greeting);}}public Greeting getGreeting(String name){if(loadedGreetings.containsKey(name)){return loadedGreetings.get(name);}else {return new English();}}private URLClassLoader getURLClassLoader(){File[] pluginFiles = getPluginFiles();ArrayList<URL> urls = new ArrayList<>();for(File plugin:pluginFiles){try{URL pluginURL = plugin.toURI().toURL();urls.add(pluginURL);}catch(MalformedURLException m){log.log(Level.SEVERE, "Could not load [{0}], ignoring", plugin.getName());}}return new URLClassLoader(urls.toArray(new URL[]{}),GreetingFactory.class.getClassLoader());}private File[] getPluginFiles(){File loc = new File("plugins");File[] pluginFiles = loc.listFiles((File file) -> file.getPath().toLowerCase().endsWith(".jar"));return pluginFiles;}}

基本上,工廠仍將使用SPI的ServiceLoader加載可用的問候語,但我們傳入自定義的ClassLoader。我們在plugins文件夾中查找任何jar文件,并使用URLClassloader加載。

這意味著我現在可以只創建一個新的實現模塊并將文件放在plugins文件夾中。 美觀且可插拔。

運行示例:

dynamic-spi文件夾中:

mvn clean install

這將構建項目并運行該應用程序。 日志將輸出:

SEVERE: Good day Phillip.Goeie dag Phillip.Eeee, what's up Phillip ?

您也可以在Maven之外運行此命令:

java -jar dynamic-spi-engine/target/dynamic-spi-engine-1.0.0-SNAPSHOT-jar-with-dependencies.jar Madonna BugsBunnySEVERE: Eeee, what's up Madonna ?

Java EE上的動態SPI

現在,這是否是個好主意,將進行另外的討論,只是為了表明它是可能的,我們現在將使用動態SPI在應用程序服務器上加載實現。 這意味著我可以向正在運行的服務器添加新的實現。 因此,我不僅可以在不接觸代碼或依賴項的情況下添加新的實現,而且還可以啟用該新實現而無需重新啟動應用程序。

實現看起來完全像Java SE SPI示例, pom.xml不包含任何實現模塊,并且我們現在有了一個新類,可以將模塊加載到plugins文件夾中:

這是一個ApplicationScoped CDI Bean,可在啟動時加載模塊。 這些模塊也可以通過REST重新加載:

@Path("/pluginloader")@ApplicationScoped@Logpublic class PluginLoader {@Produces @Named("Greetings")private final Map<String,Greeting> loadedGreetings = new HashMap<>();public void init(@Observes @Initialized(ApplicationScoped.class) ServletContext context) {loadPlugins();}@GET@Path("/reload")public Response loadPlugins(){ClassLoader classloader = getClassLoader();ServiceLoader<Greeting> loader = ServiceLoader.load(Greeting.class, classloader);Iterator<Greeting> greetingIterator = loader.iterator();while (greetingIterator.hasNext()) {Greeting greeting = greetingIterator.next();log.log(Level.SEVERE, "Adding provider [{0}]", greeting.getName());if(!loadedGreetings.containsKey(greeting.getName())){loadedGreetings.put(greeting.getName(), greeting);}}return Response.ok("ok").build();}private ClassLoader getClassLoader(){File[] pluginFiles = getPluginFiles();if(pluginFiles!=null){ ArrayList<URL> urls = new ArrayList<>();for(File plugin:pluginFiles){try{URL pluginURL = plugin.toURI().toURL();urls.add(pluginURL);}catch(MalformedURLException m){log.log(Level.SEVERE, "Could not load [{0}], ignoring", plugin.getName());}}return new URLClassLoader(urls.toArray(new URL[]{}),this.getClass().getClassLoader());}return this.getClass().getClassLoader();}private File[] getPluginFiles(){File loc = getPluginDirectory();if(loc==null)return null;File[] pluginFiles = loc.listFiles((File file) -> file.getPath().toLowerCase().endsWith(".jar"));return pluginFiles;}private File getPluginDirectory(){File plugins = new File("plugins");if(plugins.exists())return plugins; return null;}}

所有加載的Greetings在Map<String,Greeting>中都可用,可以將其注入工廠 :

@RequestScoped@Logpublic class GreetingFactory {@Inject @Named("Greetings")private Map<String,Greeting> greetings;// ...}

運行示例:

與Java EE CDI和EJB示例類似,它在Wildfly Swarm , Open Liberty和Payara Micro上運行

javaee-spi文件夾中:

mvn clean install -P wildfly

(或-P自由或-P payara)

在所有3種情況下,maven都會:

  • 在部署了應用程序的情況下啟動應用程序服務器
  • 擊中2個REST網址:
    • http:// localhost:8080 / javaee-spi-engine / api (此列表列出了所有實現)
  • 關閉應用程序服務器(Payara除外)

因此,在日志中,您將看到(類似):

=============================================== ["BugsBunny","Afrikaans","English"] ============================================================================================== ["Eeee, what's up Phillip ?","Goeie dag Phillip.","Good day Phillip."] ===============================================

如果運行Payara,則服務器不會關閉,因此您也可以手動測試工廠:

wget -qO- http://localhost:8080/javaee-spi-engine/api/Frans?way=Afrikaans["Goeie dag Frans."]

當前,在plugins文件夾中,您將看到2個已知的實現(南非荷蘭語和Bugs Bunny):

ls javaee-spi-engine/plugins/javaee-spi-impl-afrikaans-1.0.0-SNAPSHOT.jar javaee-spi-impl-bugsbunny-1.0.0-SNAPSHOT.jar

當我們構建這些實現時,將其復制到那里。

現在,讓服務器保持運行狀態,并添加一種新的問候方式,稱為AliG。 (請參閱https://www.youtube.com/watch?v=b00lc92lExw )

cd javaee-spi-impl-aligmvn clean install -P plugin

這會將Ali G實現復制到plugins文件夾。

現在,讓我們再次問候Frans:

wget -qO- http://localhost:8080/javaee-spi-engine/api/Frans?way=AliG["Booyakasha Frans !"]

因此,我們可以向正在運行的服務器添加新的具體實現。

結束

就是這樣(現在)。 歡迎任何評論和您自己的示例!

翻譯自: https://www.javacodegeeks.com/2017/12/some-factory-examples.html

總結

以上是生活随笔為你收集整理的一些工厂实例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

99精品视频网站 | 亚洲精品国产精品国产 | 国产一区二区三区网站 | 久久久精品国产一区二区三区 | 色在线视频网 | 美女视频黄是免费的 | 亚洲爱爱视频 | 三级免费黄 | 人人揉人人揉人人揉人人揉97 | 超碰97.com| 欧美日韩在线观看一区二区三区 | 国产又粗又猛又黄视频 | 国产精品久久电影网 | 国产又粗又猛又黄又爽 | 国产精品久久久久久久久久久久久 | 欧美激情操| 久久精品二区 | 视频一区二区视频 | 久久综合在线 | 午夜免费视频网站 | 国产精品6999成人免费视频 | 99色视频 | 91插插插网站 | 亚洲天堂网视频在线观看 | 国产精品免费观看国产网曝瓜 | av片在线观看| 日本电影久久 | 伊人天堂av | 一级黄色av | 伊人影院在线观看 | 激情动态| 99热这里只有精品8 久久综合毛片 | 久久国产精品99久久久久久丝袜 | 中文字幕欲求不满 | 99热这里有 | 欧美成人在线网站 | 在线免费黄色av | 久久久久久国产精品999 | 色综合网在线 | 中文字幕在线一区二区三区 | 伊人亚洲综合网 | 日韩成人中文字幕 | 国产麻豆精品免费视频 | 欧美日韩午夜爽爽 | 亚洲影音先锋 | 精品九九九九 | 色偷偷88888欧美精品久久 | 九九视频精品免费 | 少妇视频一区 | 天天色天天色天天色 | 成人在线免费看 | 亚洲精品乱码久久久久久 | 久久乱码卡一卡2卡三卡四 五月婷婷久 | 视频一区在线播放 | 青青河边草观看完整版高清 | 国产色在线视频 | 综合激情| 欧美一级网站 | 激情综合亚洲精品 | 欧美日韩国产一区二区三区在线观看 | 久久久亚洲国产精品麻豆综合天堂 | 高清久久久 | 在线国产一区二区 | 日b视频国产 | 欧美激情综合五月色丁香 | 中文在线最新版天堂 | 亚洲涩涩色 | 中文字幕av在线不卡 | 国产乱老熟视频网88av | 狠狠色伊人亚洲综合成人 | 久久精品韩国 | 免费网站色 | 日本69hd| 一区二区三区在线视频观看58 | 国产美腿白丝袜足在线av | 国产成人精品一区二区三区福利 | 最近中文字幕视频网 | avcom在线| av怡红院 | 怡红院av久久久久久久 | 最近中文字幕大全中文字幕免费 | 国产在线欧美 | 99在线播放 | 国产成本人视频在线观看 | 天天色棕合合合合合合 | 精品久久久久久亚洲综合网站 | 在线观av | 欧美福利视频 | 久久久久伊人 | 香蕉精品视频在线观看 | 亚洲一级电影在线观看 | 96精品高清视频在线观看软件特色 | 中文字幕 欧美性 | 五月综合婷| 日本在线观看视频一区 | 91九色在线视频观看 | 夜夜高潮夜夜爽国产伦精品 | 麻豆免费精品视频 | 久久伊人爱 | 欧美精品色| 国产91在线观看 | 国产中文欧美日韩在线 | 欧美一二在线 | 天天射天天添 | 亚洲日本国产精品 | 欧美日韩一区二区三区免费视频 | 99在线精品视频观看 | 黄色高清视频在线观看 | 日韩欧美网址 | 日韩av一区二区在线播放 | 久久久毛片 | 亚洲精品欧美成人 | 青青草在久久免费久久免费 | 日日射天天射 | 久久久久久久久久久久av | 亚洲免费在线播放视频 | www.夜夜夜 | 天天干天天操天天搞 | 国产免费高清视频 | 日韩精品综合在线 | 99国产精品久久久久久久久久 | 国产韩国日本高清视频 | 99视频免费| 国产第页| 亚洲va欧美va人人爽 | 日韩黄色免费在线观看 | 超碰com| 91精品一区在线观看 | 国产电影黄色av | 狠狠狠狠狠狠操 | av在线免费观看不卡 | 日日操天天操夜夜操 | .国产精品成人自产拍在线观看6 | 国产理伦在线 | 不卡中文字幕av | 在线观看视频精品 | 日韩欧美高清在线观看 | 成人在线一区二区 | 人人爽人人爽人人片av免 | 免费视频在线观看网站 | 国产日韩欧美视频在线观看 | 伊人热| 婷婷射五月| 国产精彩视频一区 | 欧洲精品视频一区二区 | 在线亚洲欧美视频 | 日韩免费一二三区 | 91最新网址 | 国产精品色婷婷视频 | 天天综合狠狠精品 | 精品久久毛片 | 久久综合九色99 | 99 精品 在线 | 国内精品视频在线 | 成人免费看黄 | 最新免费中文字幕 | www99久久| 操操色| 免费在线观看午夜视频 | www看片网站 | 精品国产一区二区三区四区在线观看 | 久久国产精品一区二区 | 在线观看的av网站 | 成人黄色在线 | 亚洲一区二区精品3399 | 免费情趣视频 | 婷婷成人亚洲综合国产xv88 | 日韩 在线a | 伊人天天色 | 日韩国产精品久久 | 日韩sese| 激情文学综合丁香 | 久久精品视频在线免费观看 | 高清av免费观看 | 四虎影视成人永久免费观看亚洲欧美 | 99爱在线 | 国产美女无遮挡永久免费 | 18国产精品白浆在线观看免费 | 在线播放亚洲激情 | 91久久影院| 欧美日韩高清一区二区 国产亚洲免费看 | 国产一级视屏 | 久草在线网址 | 国产精品国产自产拍高清av | 一区二区三区福利 | 中文字幕在线观看资源 | 91伊人久久大香线蕉蜜芽人口 | 日韩剧| 人人草在线视频 | 黄色免费观看视频 | 操综合 | 最近中文字幕免费 | 在线高清 | 91视频首页 | a级成人毛片| 天天色天天色天天色 | 久久综合五月天婷婷伊人 | 国产亚洲成人网 | 在线免费高清一区二区三区 | 中文字幕在线观看2018 | 国产最新在线观看 | 久久久国产99久久国产一 | 午夜骚影| 黄色影院在线观看 | 久久免费精品一区二区三区 | 亚洲高清视频一区二区三区 | 97精品久久人人爽人人爽 | 久久免费视频3 | 视频在线91| 在线v片 | 国内精品久久久久久久久久久久 | 日韩电影在线一区二区 | av一二三区 | 国产精品永久免费在线 | 激情五月婷婷综合网 | 亚洲电影在线看 | 国产麻豆精品95视频 | 久草在线视频新 | 亚洲网站在线 | 亚洲天堂视频在线 | 美女网站视频免费都是黄 | 中文字幕在线播放一区 | 亚洲精品黄色 | 久久视频在线观看免费 | 色综合天 | 天天躁天天躁天天躁婷 | 97在线观看免费高清完整版在线观看 | 99r在线 | 91精品视频在线观看免费 | 日韩一级理论片 | 欧美在线观看视频一区二区三区 | 久久伦理电影 | 人人揉人人揉人人揉人人揉97 | 亚洲国产美女精品久久久久∴ | 97成人在线视频 | 国产不卡网站 | 日韩免费观看视频 | 久久久精品亚洲 | 久久官网| 国产精品2019| 91麻豆产精品久久久久久 | 在线中文字幕网站 | 欧美天天干 | 午夜视频久久久 | 亚洲精品网站 | 夜添久久精品亚洲国产精品 | 又污又黄网站 | 黄色成品视频 | 少妇视频一区 | 欧美一级黄色网 | wwxxxx日本| 久久国产精品免费看 | 亚洲经典视频 | 色噜噜日韩精品欧美一区二区 | 久草在在线| 99r精品视频在线观看 | 黄色av影院 | 免费成人结看片 | 欧美精品久久久久久久久久久 | 99视频在线免费播放 | 超碰在线97免费 | 91色偷偷 | 精品在线观| 精品无人国产偷自产在线 | 欧美午夜理伦三级在线观看 | 久久国产手机看片 | 国产精品久久中文字幕 | 亚洲夜夜网 | 国产精品自产拍在线观看桃花 | 日韩啪啪小视频 | 99精品视频网 | 久久久久9999亚洲精品 | 国产精品理论片在线播放 | 亚洲国产97在线精品一区 | 韩日三级在线 | 天天干天天做 | 99热在线看| 视频国产在线 | av免费片 | 成人高清在线观看 | 中文字幕在线观看日本 | 国产一区二区精 | 国产黄在线 | 国产一区二区三区高清播放 | 干干干操操操 | 国产三级精品三级在线观看 | 日日夜夜婷婷 | 色偷偷88888欧美精品久久久 | 天天做天天爱天天综合网 | 国产精品永久在线观看 | 伊人久久国产 | 亚洲网站在线 | 香蕉蜜桃视频 | 一级国产视频 | 蜜臀91丨九色丨蝌蚪老版 | 中文字幕 在线看 | 一级黄色a视频 | 国产精品美女视频网站 | 国产高清在线免费观看 | 精品视频在线看 | 97av在线视频免费播放 | 97在线视频免费观看 | 国产成人av网站 | 中文字幕电影网 | 日本中文字幕在线免费观看 | 国产精品欧美一区二区三区不卡 | 国产精品久久久久久久久大全 | 日韩国产精品久久 | 国产v在线观看 | 在线观看一区 | 欧美性黑人 | 日本一区二区免费在线观看 | 成人在线观看你懂的 | 婷婷色综合网 | 中文字幕在线观看网址 | 久久96国产精品久久99软件 | 国产精品久久久影视 | 91精品推荐 | 国产一区二区在线免费 | 久久久久免费 | 日本在线观看中文字幕无线观看 | 91成熟丰满女人少妇 | 九九九九热精品免费视频点播观看 | 免费高清无人区完整版 | 精品免费视频. | 天天射天天射天天射 | 激情婷婷综合网 | 成人h电影| 久久久久国产精品免费 | 狠狠色丁香婷综合久久 | 欧美日韩在线播放 | 99免费在线观看 | 500部大龄熟乱视频 欧美日本三级 | 狠狠色丁婷婷日日 | 欧美性极品xxxx娇小 | 久久一线 | 综合激情av | 超碰公开在线观看 | 色在线视频 | 亚洲一区二区高潮无套美女 | 97久久久免费福利网址 | av手机在线播放 | 一区二区三区在线视频观看58 | av亚洲产国偷v产偷v自拍小说 | 久久国产麻豆 | 九色视频网址 | 国产精品亚洲视频 | 伊人久操| 精油按摩av | 久久美女高清视频 | 五月婷婷视频在线观看 | 日韩在线网址 | 91网址在线 | 天天干天天天天 | 中文字幕亚洲欧美 | 色在线亚洲 | 中文字幕乱码日本亚洲一区二区 | 国产黄色av| 曰韩在线| h视频日本 | 人操人| 在线观看爱爱视频 | 在线亚洲人成电影网站色www | 日韩精品免费一区 | 国产成人一区二区精品非洲 | 在线中文字幕av观看 | 麻豆传媒视频在线免费观看 | 91精品入口 | 日韩欧美一区二区在线 | 中文字幕乱码电影 | 天天操天天吃 | 天天做天天爱天天爽综合网 | 日韩av电影国产 | 欧美视频在线二区 | 国产在线永久 | 欧美色噜噜 | 久久久一本精品99久久精品66 | 国产精品毛片一区二区 | 国产精品99免视看9 国产精品毛片一区视频 | 亚洲成人精品在线观看 | 69国产盗摄一区二区三区五区 | 精油按摩av | 久碰视频在线观看 | 国产福利精品一区二区 | 日韩亚洲精品电影 | 九九久久免费视频 | 久久中文字幕视频 | 特级aaa毛片 | 97视频在线观看播放 | 亚洲视频精品在线 | 亚洲国产综合在线 | 三级av在线免费观看 | 激情中文在线 | 日韩精品免费在线 | 青青看片 | 激情丁香5月 | 99久高清在线观看视频99精品热在线观看视频 | 日日干日日操 | 色综合综合| 亚洲欧洲成人 | 国产高清一区二区 | 国产一区二三区好的 | 国产流白浆高潮在线观看 | 国产婷婷在线观看 | 成 人 黄 色 免费播放 | 国产黄色特级片 | 麻豆传媒电影在线观看 | 狠狠狠色丁香综合久久天下网 | 麻豆一区在线观看 | 福利区在线观看 | 国产一区二区三区 在线 | 综合天天色| www黄在线 | 日本午夜免费福利视频 | 成人一区电影 | 九九视频在线观看视频6 | 96av视频| 日韩aⅴ视频 | 国产黄a三级三级三级三级三级 | 久久tv视频 | 99欧美 | 日韩精品欧美专区 | av片子在线观看 | 人人干人人添 | 国产不卡免费 | 视频一区视频二区在线观看 | 久一久久 | 亚洲综合欧美精品电影 | 色婷婷综合五月 | 激情综合六月 | 97视频在线观看网址 | 一级α片免费看 | 成人av一二三区 | 国产高清视频免费最新在线 | 青青啪 | av千婊在线免费观看 | 国产亚洲精品久久久久5区 成人h电影在线观看 | 国产黄色精品在线 | 五月天伊人网 | 久久综合影视 | 国产96在线观看 | 中国一区二区视频 | 丁香婷婷在线 | 一区二区视频在线观看免费 | 激情综合色综合久久综合 | 久综合网 | 亚洲视屏 | 999国内精品永久免费视频 | 国产精品原创在线 | 婷婷成人综合 | 狠狠的干狠狠的操 | 中文字幕 成人 | 久草在线视频网 | 99av国产精品欲麻豆 | 99久久婷婷国产一区二区三区 | 国产欧美综合视频 | 黄色网址av| 成人免费视频播放 | 91麻豆精品国产91久久久久久久久 | 高清一区二区 | 国产一级精品在线观看 | 五月天婷婷免费视频 | 国产电影一区二区三区四区 | 国产精品久久一卡二卡 | 国产五码一区 | 国产亚洲情侣一区二区无 | 天天爽夜夜爽精品视频婷婷 | 国产在线自 | 奇米影视8888在线观看大全免费 | av看片网| 免费精品在线观看 | 一级电影免费在线观看 | 色综合久久中文综合久久牛 | 丁香综合av| 色综合激情久久 | 99精品欧美一区二区三区黑人哦 | 亚洲最新毛片 | 亚洲婷婷在线 | 精品一二三四在线 | 六月丁香婷| av成人免费在线 | 国产麻豆果冻传媒在线观看 | 中文网丁香综合网 | 国产精品视频永久免费播放 | 天天av天天 | 久99久中文字幕在线 | 亚洲黄a| 久久精品一区二区三区国产主播 | 久久99热这里只有精品国产 | 国产精品中文久久久久久久 | 天天干,夜夜爽 | 午夜.dj高清免费观看视频 | 激情av五月婷婷 | 成人99免费视频 | 亚洲日本va中文字幕 | 狠狠狠综合 | 国产成人免费在线 | 欧美精品久久人人躁人人爽 | 午夜91在线| a级片在线播放 | 欧美性免费| 亚洲视频999 | 欧美视频国产视频 | 日韩国产精品一区 | 狠狠操电影网 | 国产一级电影免费观看 | 久久久91精品国产一区二区三区 | 日本免费一二三区 | 亚洲国产精品一区二区尤物区 | 91视频这里只有精品 | 日韩有码欧美 | 91成人网在线播放 | 久久久免费视频播放 | 天天草视频 | 中文字幕中文中文字幕 | 91精品视频免费观看 | 色多多污污在线观看 | 少妇高潮冒白浆 | 特级毛片在线观看 | 亚洲电影成人 | 色婷婷综合久久久 | 午夜色站 | 国产精品视频大全 | 日韩欧美一区二区三区视频 | 国产丝袜在线 | 99久在线精品99re8热视频 | 免费看成人av | av在线播放不卡 | 国产一级视频 | 在线精品视频免费观看 | 国产精品激情在线观看 | 西西444www| 天天干夜夜擦 | 午夜精品福利一区二区 | 国产成人在线播放 | 狠狠操夜夜操 | 精品一区二区免费在线观看 | 激情影音 | 国产a免费 | 欧美激情精品久久 | 黄色a大片 | 亚洲h在线播放在线观看h | 97香蕉视频 | 综合天堂av久久久久久久 | 69国产成人综合久久精品欧美 | 91高清在线 | 精品国产一区二区三区av性色 | 99精品在线直播 | 最新高清无码专区 | 久久精品国产亚洲aⅴ | 久久久久久久久久久福利 | 日日夜夜天天操 | 国产一级精品视频 | 91看片黄色| 国产精品综合av一区二区国产馆 | 亚洲一区二区三区四区在线视频 | 天天插伊人 | 国产一级高清 | 九九色网 | 伊人超碰在线 | 国产一区二区三区高清播放 | 在线视频成人 | 欧美日韩在线观看一区二区 | 黄色在线视频网址 | 国产黑丝一区二区三区 | www.久热 | 啪啪小视频网站 | www.夜夜| 91污在线 | 亚洲五月 | 免费看的黄色片 | 亚洲免费视频观看 | 天天综合视频在线观看 | 日女人免费视频 | 二区三区在线视频 | 日日摸日日添夜夜爽97 | 久操视频在线观看 | 国产亚洲视频在线免费观看 | 一级黄色片在线免费观看 | 久久精品伊人 | 日韩欧美高清在线观看 | 91精品久久久久久综合五月天 | 婷婷在线播放 | 成人综合婷婷国产精品久久免费 | 四虎永久免费 | 日韩欧美久久 | 韩日电影在线 | 国产麻豆剧传媒免费观看 | 中文字幕高清 | 狠狠色丁香久久婷婷综合_中 | 日韩剧情 | 中文字幕在线人 | 亚洲国产人午在线一二区 | 99精品热视频 | 亚洲手机天堂 | www.色午夜.com | 中文字幕在线观看网站 | 涩涩网站在线观看 | 久久草在线精品 | 99精品一级欧美片免费播放 | 亚洲视频精品在线 | 麻豆免费视频网站 | 在线观看黄色国产 | 五月综合婷 | 欧美日韩不卡在线观看 | 免费www视频| 久久综合婷婷综合 | 久久人人爽爽 | 国产精品免费久久久久影院仙踪林 | 久久天天躁夜夜躁狠狠85麻豆 | 国产精品18videosex性欧美 | 亚洲国产午夜 | 久章操 | 91三级视频| 四虎影视精品成人 | 国产香蕉视频在线播放 | 国产在线播放一区 | av在线在线 | 中文字幕亚洲欧美日韩 | 中文字幕资源网 | av福利网址导航大全 | 国产免费久久久久 | 欧美伦理一区二区 | 一级电影免费在线观看 | 精品一区免费 | 一区二区三区高清在线观看 | 超碰av在线 | 中文字幕一二三区 | 91成年人视频 | 中文字幕精品久久 | 午夜美女wwww | 狠狠干激情 | 91看片一区二区三区 | 91看片麻豆| 四虎影视国产精品免费久久 | 亚洲精品婷婷 | 久久精品国产精品亚洲 | 二区视频在线观看 | 久久国产精品久久久 | 97在线成人 | www.夜色.com | 99精品久久精品一区二区 | 啪啪肉肉污av国网站 | 欧美电影黄色 | 97精品国自产拍在线观看 | 欧美大香线蕉线伊人久久 | 日韩欧美在线视频一区二区 | a级黄色片视频 | 国产一区二区在线观看免费 | 99久久综合精品五月天 | 在线天堂中文在线资源网 | 奇米网在线观看 | 久久,天天综合 | 国产剧情av在线播放 | 亚洲无线视频 | 欧美另类交在线观看 | 国产69久久精品成人看 | 国产精品porn | 在线观看视频亚洲 | 久久a v视频 | 99久久久久久久久 | 国产综合精品一区二区三区 | 91精品1区2区 | 国产91在线观看 | 黄色中文字幕 | 香蕉视频在线播放 | 亚洲视频大全 | 久久久久伦理电影 | 狠狠色丁香久久婷婷综合_中 | 免费在线播放视频 | 00av视频| 黄色影院在线免费观看 | 四虎永久免费在线观看 | 黄色毛片视频免费观看中文 | 国产精品9999久久久久仙踪林 | 91av在线视频播放 | 欧美一区成人 | 最近免费中文字幕大全高清10 | 超碰在线国产 | 九九久久国产精品 | 亚洲欧美精品在线 | 国产区精品| av免费观看高清 | 国内亚洲精品 | 日本久久精品视频 | 亚洲v欧美v国产v在线观看 | 中文字幕视频观看 | 91日韩在线播放 | 久久久久久久久久久影视 | 欧美日韩视频网站 | 国产一级淫片在线观看 | av电影在线免费 | 91麻豆国产福利在线观看 | 黄色成人小视频 | 日韩欧美一区二区三区黑寡妇 | 亚洲精品观看 | 黄色免费在线视频 | 97超碰免费 | 国产伦理精品一区二区 | 欧美日韩国产精品一区二区亚洲 | 伊人婷婷网 | 成人cosplay福利网站 | 国产精品福利在线观看 | 久久av黄色 | 国产亚洲精品精品精品 | 在线v片免费观看视频 | 久久国产热 | 日韩视频免费在线 | 久久综合色综合88 | 久久精品久久99精品久久 | 国产亚洲精品久久久久久大师 | 一区二区三区免费 | 国产精品自产拍在线观看中文 | 一区二区三区四区不卡 | 日本精品一区二区三区在线播放视频 | 一区二区三区在线免费播放 | 伊人五月天婷婷 | 久久av观看 | 国产操在线 | 很黄很黄的网站免费的 | 91麻豆文化传媒在线观看 | 精品视频免费观看 | 国产午夜在线观看视频 | 99精品视频免费看 | 伊人五月综合 | 精品国内 | 色射色| 久久草av | 狠狠躁夜夜a产精品视频 | 黄色国产高清 | 麻豆视频大全 | 九月婷婷人人澡人人添人人爽 | 亚洲 成人 欧美 | 五月天高清欧美mv | 国产电影一区二区三区四区 | 亚洲资源在线网 | 狠狠狠狠狠狠天天爱 | 国产精品一区二区久久精品爱涩 | 日日夜夜天天射 | 欧美黑人巨大xxxxx | 人人看人人艹 | aav在线| 日日夜夜av| 玖玖玖影院 | 一区二区三区免费在线观看 | 亚洲最大色 | 国产伦理一区 | 国产精品成人一区二区 | 欧美成人亚洲成人 | 手机色站 | 六月丁香激情网 | 一区二区三区在线观看免费视频 | 亚洲1级片 | 欧美在线视频第一页 | 成人在线播放视频 | 999在线视频 | 手机成人免费视频 | av福利第一导航 | 欧美极品xxxxx | 成人一区二区三区在线观看 | 国产在线va | av高清免费| 91在线视频观看免费 | 三级在线国产 | 在线免费观看视频你懂的 | 日韩性片| 中文字幕在线乱 | 久久精品99久久久久久2456 | 99热国产在线 | 亚洲综合成人婷婷小说 | 中文字幕色在线 | 天天射天天干天天爽 | 色在线视频 | 在线观看国产区 | 中国美女一级看片 | 国产91在线看 | 黄在线| 91av在线国产 | 福利片免费看 | 免费黄色网址大全 | 国产永久免费高清在线观看视频 | 亚洲欧洲一区二区在线观看 | 992tv在线 | 精品一区二区在线看 | 亚洲精品国产第一综合99久久 | 91精品啪在线观看国产线免费 | 一区二区三区在线免费观看视频 | 超碰97人人干 | 天天干天天爽 | 久久久影院一区二区三区 | 射九九| 午夜在线日韩 | 久久视精品 | 91传媒免费观看 | 欧美在线a视频 | 免费日韩 精品中文字幕视频在线 | 97超碰精品 | av电影在线观看完整版一区二区 | 久久视讯 | 日韩中文字幕视频在线 | 国产福利在线免费观看 | 在线观看中文字幕dvd播放 | 久久精品视频免费观看 | 亚洲国产三级 | 免费欧美高清视频 | 国产精品综合久久久久久 | 久草在线网址 | 国产爽视频 | 亚洲成人精品久久 | 三级黄色大片在线观看 | 一区二区中文字幕在线观看 | 高清av免费观看 | 国产黄免费看 | 丁香激情五月 | 久久久久久久久福利 | 黄色av网站在线观看免费 | 亚洲乱码精品久久久 | 激情五月亚洲 | 日韩精品一区不卡 | 91插插插免费视频 | 91丨九色丨高潮 | 国产成人精品一二三区 | 在线看一级片 | 伊人色综合久久天天网 | 香蕉视频18| 日本黄色免费电影网站 | 成年在线观看 | 精品视频久久 | 韩国av在线播放 | 91麻豆精品久久久久久 | 精品一区二区在线播放 | 成人免费在线观看电影 | 日韩在线观看中文字幕 | 中文字幕电影一区 | 一本一道久久a久久综合蜜桃 | 草久在线观看 | 欧美性极品xxxx娇小 | 国产精品99精品 | 玖玖在线观看视频 | 9999在线| 久久激情婷婷 | 99精品福利视频 | 日韩理论 | 免费精品久久久 | wwwwww黄| 日韩欧美一区二区不卡 | 91在线小视频 | 中文字幕乱偷在线 | 久久66热这里只有精品 | 香蕉影院在线观看 | 97人人爽人人 | 日本精品视频一区 | 国产1区在线 | 国产乱视频 | 五月婷婷开心 | 国产综合福利在线 | 国产不卡视频在线 | 5月丁香婷婷综合 | 在线观看一级 | 色噜噜狠狠狠狠色综合 | 国产精品一区二区av | 婷婷激情综合 | 亚洲 中文字幕av | 国产精品永久免费视频 | 国产精品系列在线观看 | 婷婷性综合 | 天天天天天天天操 | 美女免费视频观看网站 | 欧美日韩在线观看视频 | 一级一级一片免费 | 久久久久亚洲精品成人网小说 | 国产美女在线观看 | 综合色婷婷 | 超碰av在线免费观看 | 免费在线观看av片 | 国产视频一区二区在线播放 | 国产精品久久久亚洲 | 日韩在线无 | 久久永久免费视频 | 日韩欧美成 | 99视频在线精品国自产拍免费观看 | 91视频在线看 | 天堂av免费看 | 永久精品视频 | 国产精品美女在线 | 久久综合久久88 | 美女免费电影 | 三上悠亚一区二区在线观看 | 超碰人人av | 日日夜夜干 | 欧美精品在线视频观看 | 亚洲 欧美 国产 va在线影院 | 久热超碰 | 99re8这里有精品热视频免费 | 在线电影中文字幕 | 精品久久久久久国产91 | 欧美日韩在线视频观看 | 亚洲91精品 | 黄色大片视频网站 | 国产最新精品视频 | 在线观看黄色小视频 | 久久与婷婷 | 最新日韩在线观看 | 一区二区三区免费在线 | 伊人在线视频 | 免费在线观看成人 | 久久涩涩网站 | 久久电影中文字幕视频 | 婷婷色站| 亚洲视频在线观看免费 | 欧美精品一区在线发布 | 国产在线观看a | 国产999视频 | 久久久久国产精品一区二区 | 成人少妇影院yyyy | 超碰av在线| 91中文字幕在线视频 | 97精品国产97久久久久久久久久久久 | 在线天堂视频 | 午夜精品婷婷 | 午夜精品视频免费在线观看 | 欧美精品久久99 | 色综合国产 | 亚洲精品在线观 | 欧美日韩免费一区 | 国产日韩欧美在线 | 丝袜护士aⅴ在线白丝护士 天天综合精品 | 日韩av不卡在线播放 | 欧美大香线蕉线伊人久久 | 91亚洲精品乱码久久久久久蜜桃 | 69国产成人综合久久精品欧美 | 天天草天天干天天射 | 一区二精品 | 九九在线视频 | 91三级视频 | 色吊丝在线永久观看最新版本 | 久久久精品影视 | 中文网丁香综合网 | 国产精品久久久久久久久久了 | 五月激情av | 亚洲自拍偷拍色图 | 美腿丝袜一区二区三区 | 欧美成天堂网地址 | 欧美日韩视频一区二区 | 2019免费中文字幕 | 日韩在线观看一区二区三区 | 中字幕视频在线永久在线观看免费 | 韩日av一区二区 | 国产91精品高清一区二区三区 | 欧美精品在线观看免费 | 最近中文字幕免费av | 国产在线观看不卡 | 中文字幕在线播放第一页 | 五月婷婷一级片 | 久久久精品视频网站 | av高清一区 | 久久黄色片 | sm免费xx网站 | 在线观看片| 日日夜夜中文字幕 | 人人狠狠综合久久亚洲婷 | 久久刺激视频 | 欧美另类v | 99精品视频精品精品视频 | 人人爽人人爽人人 | 久久精品国产精品亚洲 | 成年人视频在线 | 成人免费观看视频网站 | 久久午夜色播影院免费高清 | 在线观看日本高清mv视频 | 久草男人天堂 | 99色免费 | 成人一级| 99中文字幕在线观看 | 欧美一二三区在线播放 | а天堂中文最新一区二区三区 | 国产精品都在这里 | 亚洲综合精品在线 | 9久久精品 | 久久只精品99品免费久23小说 | 日韩av中文字幕在线免费观看 | 日本3级在线观看 | 日韩三级免费 | 日韩精品一区二区三区在线播放 | 国产成人精品午夜在线播放 | 免费在线精品视频 | 国产一级免费av | 欧美aa在线观看 | 亚洲精品理论片 | 亚洲伊人网在线观看 | 国产亚洲精品av | 色综合咪咪久久网 | 色婷婷免费视频 | 久久天天躁狠狠躁夜夜不卡公司 | 免费看色的网站 | 黄污视频大全 | 国产福利在线不卡 | 久久九九久久 |