《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 模擬設(shè)計(jì) > 設(shè)計(jì)應(yīng)用 > 基于AOP策略模式的實(shí)現(xiàn)機(jī)制
基于AOP策略模式的實(shí)現(xiàn)機(jī)制
2016年微型機(jī)與應(yīng)用第1期
江華麗
(福建師范大學(xué) 閩南科技學(xué)院,福建 泉州 362332)
摘要: 在當(dāng)前軟件需求越來越復(fù)雜的時(shí)代,策略模式作為23種經(jīng)典的設(shè)計(jì)模式之一,它有著其重要的發(fā)揮舞臺(tái)。本文首先將傳統(tǒng)基于OOP策略模式的局限性進(jìn)行分析說明,提出基本的策略模式以及“鏈?zhǔn)健辈呗阅J交贏OP的具體實(shí)現(xiàn),解決傳統(tǒng)策略模式可能出現(xiàn)的代碼分散、代碼混亂問題;接著進(jìn)行復(fù)雜度方面的實(shí)驗(yàn)對(duì)比分析;最后分析基于AOP的策略模式可能的應(yīng)用場(chǎng)景。
Abstract:
Key words :

  摘要:在當(dāng)前軟件需求越來越復(fù)雜的時(shí)代,策略模式作為23種經(jīng)典的設(shè)計(jì)模式之一,它有著其重要的發(fā)揮舞臺(tái)。本文首先將傳統(tǒng)基于OOP策略模式的局限性進(jìn)行分析說明,提出基本的策略模式以及“鏈?zhǔn)健辈呗阅J交?a class="innerlink" href="http://www.jysgc.com/tags/AOP" title="AOP" target="_blank">AOP的具體實(shí)現(xiàn),解決傳統(tǒng)策略模式可能出現(xiàn)的代碼分散、代碼混亂問題;接著進(jìn)行復(fù)雜度方面的實(shí)驗(yàn)對(duì)比分析;最后分析基于AOP的策略模式可能的應(yīng)用場(chǎng)景。

  關(guān)鍵詞:策略模式;AOP;設(shè)計(jì)模式

0引言

  模式(Pattern)一詞最初出現(xiàn)在建筑學(xué)領(lǐng)域上,素有“模式之父”之稱的美國加利福尼亞大學(xué)Christopher Alexander博士給出其經(jīng)典的定義:每個(gè)模式都描述環(huán)境中不斷出現(xiàn)的問題,提出該問題的解決方案的核心。通過這種方式,可以無數(shù)次地使用那些已有的解決方案,無須再重復(fù)相同的工作[1-3]。設(shè)計(jì)模式(Design Pattern),即是一種方法論,是前人經(jīng)過無數(shù)次實(shí)踐,加以分類、整理,并從中提取出的在特定場(chǎng)景下解決一般設(shè)計(jì)問題的方法總結(jié)。可以說它是一種解決一類特定問題的模板或者現(xiàn)在所說的最佳實(shí)踐。設(shè)計(jì)模式的提出與應(yīng)用,使得在軟件開發(fā)過程中,編寫的代碼更加容易被人理解,代碼更加可靠。OOP(面向?qū)ο缶幊蹋┡c設(shè)計(jì)模式的目的皆是為了使代碼獲得更強(qiáng)大的可復(fù)用性等,這使得兩者進(jìn)行無縫的連接。當(dāng)前設(shè)計(jì)模式幾乎都是基于OOP上實(shí)現(xiàn)的,而策略模式是設(shè)計(jì)模式的[1]其中一種。策略模式在OOP上的實(shí)現(xiàn)技術(shù)雖然已經(jīng)可以解決策略模式在開發(fā)過程中出現(xiàn)的大部分問題和需求,但是隨著軟件開發(fā)需求越來越多,業(yè)務(wù)邏輯越來越復(fù)雜,在解決一些復(fù)雜的需求時(shí),策略模式這種基于OOP的實(shí)現(xiàn)越來越顯示出它的局限性。OOP這種面向?qū)ο缶幊痰乃枷耄m然解決了軟件開發(fā)中劃分角色的問題,實(shí)現(xiàn)軟件的模塊化設(shè)計(jì),但其定義的是一種從上到下的關(guān)系,當(dāng)在解決從左到右的關(guān)系時(shí)卻顯得很無力。如在實(shí)現(xiàn)系統(tǒng)中各個(gè)模塊都存在的公共功能,例如日志、安全性、性能監(jiān)測(cè)、異常捕獲等時(shí),如果仍用OOP技術(shù),就可能導(dǎo)致代碼混亂、分散等問題,從而導(dǎo)致代碼可讀性差,代碼質(zhì)量低,可復(fù)用性、可擴(kuò)展性差。AOP就是一種有效可行的解決方案,它是一種“橫切”的技術(shù),通過把上述公共功能封裝成一個(gè)獨(dú)立的模塊即稱之為“切面”[4-6],然后把它織入到各個(gè)模塊中。本文就當(dāng)前較為流行、使用較為廣泛的設(shè)計(jì)模式之一——策略模式,探討其在AOP下的實(shí)現(xiàn)。

1策略模式

  11策略模式結(jié)構(gòu)

  當(dāng)前,設(shè)計(jì)模式種類最為經(jīng)典的有23種,可以歸納分為三大類,即創(chuàng)建型模式、行為型模式和結(jié)構(gòu)型模式。策略模式為行為型模式之一,它定義一系列算法,并且將這一系列的算法封裝成為策略類,使這些策略類相互獨(dú)立又可以相互替換,向外則提供公共的接口即策略接口。策略類的調(diào)用完全取決于調(diào)用者,這使得當(dāng)需求或者說策略算法發(fā)生改變時(shí),只需新增策略類,而無需修改其他代碼,從而不會(huì)影響到用戶,使得策略類獨(dú)立于用戶而變化。總的來說,策略模式是對(duì)算法的包裝,是把使用算法的責(zé)任和算法本身分離開來,委派給不同的對(duì)象管理[7]。策略模式定義以下三種角色,其結(jié)構(gòu)圖如圖1所示。

  

001.jpg

  策略模式提倡“針對(duì)接口編程”的模式,而使用接口的目的是為了統(tǒng)一標(biāo)準(zhǔn)或者說是指定一種強(qiáng)制的規(guī)定[3]。使用策略模式是由用戶/開發(fā)者發(fā)起并根據(jù)其具體的需求、具體的操作決定調(diào)用哪種具體的策略類。當(dāng)前,策略模式的使用十分廣泛,例如:JDK中的Comparable、Comparator接口,Swing中的布局管理器LayoutManager,邊界類Border等。

12AOP

  AOP(Aspect Oriented Programming)即面向切面編程,是近些年來開始流行的一種新的編程范式。AOP為開發(fā)者提供一種描述橫切關(guān)注點(diǎn)的機(jī)制,并能夠自動(dòng)將橫切關(guān)注點(diǎn)織入到面向?qū)ο蟮能浖到y(tǒng)中,從而實(shí)現(xiàn)了橫切關(guān)注點(diǎn)的模塊化[8]。AOP的結(jié)構(gòu)圖如圖2所示。

  

002.jpg

  AOP可以說是OOP的一種改進(jìn)或者補(bǔ)充。OOP能夠很好地實(shí)現(xiàn)軟件開發(fā)中類從上到下的縱向關(guān)系,解決模塊功能的角色劃分問題,使得很多的關(guān)注點(diǎn)都模塊化。然而,OOP在處理橫向問題即橫切關(guān)注點(diǎn)時(shí)將會(huì)出現(xiàn)代碼交織/混亂、代碼分散等問題。其實(shí)質(zhì)在于OOP傾向處理的是“一維空間”的問題,而橫切關(guān)注點(diǎn)則是將其變成二維空間上的問題,這使得OOP在實(shí)現(xiàn)二維問題時(shí)使用很糟糕的映射。當(dāng)前,實(shí)現(xiàn)AOP技術(shù)有很多,如AspectJ,Aspect Werkz,AspectC++,Jboss AOP,Spring AOP,AOP/ST,DynInst,Nanning等。從編織的方式可以分為靜態(tài)編織和動(dòng)態(tài)編織;從編織的時(shí)刻可以分為編譯時(shí)編織、載入時(shí)編織和運(yùn)行時(shí)編織三大類別。而實(shí)現(xiàn)AOP技術(shù)的實(shí)質(zhì)即動(dòng)態(tài)代理。現(xiàn)在比較流行的實(shí)現(xiàn)動(dòng)態(tài)代理的模式主要有:JDK動(dòng)態(tài)代理和CGLIB動(dòng)態(tài)代理。本文將使用Spring AOP框架實(shí)現(xiàn)AOP技術(shù)[9]。

2策略模式在AOP具體實(shí)現(xiàn)

  AOP(面向切面編程)比較擅長(zhǎng)處理那些分散在各個(gè)模塊中又有別于核心業(yè)務(wù)關(guān)注點(diǎn)的公共功能需求,例如日志、安全性、性能監(jiān)測(cè)、異常捕獲等。下面將以各個(gè)模塊中的日志處理為例進(jìn)行討論。在軟件開發(fā)特別是WEB開發(fā)中,經(jīng)常采用MVC模式,而DAO層一般用來作為數(shù)據(jù)訪問層。操作數(shù)據(jù)無非就是增刪改查操作,在增刪改查數(shù)據(jù)時(shí)應(yīng)對(duì)其進(jìn)行日志生成,操作數(shù)據(jù)日志又可細(xì)分為增、刪、改、查4種日志,即4種日志策略,部分實(shí)現(xiàn)代碼如下:

  //日志策略接口

  public interface LogStrategy {

  public void log();

  }

  //保存數(shù)據(jù)日志策略實(shí)現(xiàn)類

  public class LogStrategyImpSave implements LogStrategy{

  private Loggerlogger = Logger.getLogger(this.getClass());

  @Override

  //其他策略實(shí)現(xiàn)類只需分別實(shí)現(xiàn)log方法,其他地方相同

  public void log() {

  logger.info("保存數(shù)據(jù)...");

  // 定義處理保存數(shù)據(jù)日志的切面類

  public class UserSaveDaoAspect {

  private LogStrategy logStrategy; //getter、setter方法省略

  //環(huán)繞通知

  @Around(value="pointCutMehtod()")

  publicvoid around(ProceedingJoinPoint pjp){try {Object object= pjp.proceed();

  21分析

  當(dāng)需求發(fā)生變化如增刪改查日志的格式改變了,這時(shí)只需新增實(shí)現(xiàn)日志策略接口LogStrategy,并根據(jù)需求實(shí)現(xiàn)里面的方法,然后在配置文件中注冊(cè)類的bean信息并修改注入到logStrategy屬性的信息,而不需要修改其他類的代碼,這也符合軟件開發(fā)的“修改封閉,擴(kuò)展開放”的原則。

  22與傳統(tǒng)基于OOP的策略模式對(duì)比

  上述舉例為J2EE軟件開發(fā)中DAO層的日志處理,而事實(shí)上在其他分層中如service層、action層等很多地方都需要日志處理。對(duì)于傳統(tǒng)的基于OOP的策略模式則需要在每一處都調(diào)用日志策略具體實(shí)現(xiàn)類的方法,這種重復(fù)的工作使得代碼看起來臃腫、不易于維護(hù),即代碼混亂、代碼分散;而對(duì)于基于AOP的策略模式則只需定義好切面類和切入點(diǎn),并在切面類中的環(huán)繞通知里調(diào)用公共功能,這里即為日志處理的方法,并配置好配置文件信息即可,而不需要在每處進(jìn)行日志處理。

  對(duì)于較為復(fù)雜的策略模式,如在處理復(fù)雜業(yè)務(wù)需求時(shí),往往不僅使用一個(gè)策略實(shí)現(xiàn)類,而且需要使用多組策略類別下的策略實(shí)現(xiàn)類才能實(shí)現(xiàn)需求。可以結(jié)合設(shè)計(jì)模式中另外一種模式即責(zé)任鏈模式,把策略模式改裝為“鏈?zhǔn)健辈呗阅J健?/p>

3對(duì)比分析

  通常用軟件的復(fù)雜度來評(píng)價(jià)一個(gè)軟件/算法的好壞,即“簡(jiǎn)單就是可靠的”。本文將使用下面4個(gè)指標(biāo)來對(duì)比和評(píng)價(jià)傳統(tǒng)的基于OOP的策略模式與基于AOP的策略模式。

  (1)圈復(fù)雜度(CC):用于衡量模塊中的判定結(jié)構(gòu)的復(fù)雜程度。圈復(fù)雜度越大其質(zhì)量一般越低,越難以維護(hù)。業(yè)界標(biāo)準(zhǔn)一般小于等于15。

  (2)扇出復(fù)雜度(FOC):用于衡量模塊間的層次調(diào)用(調(diào)用下級(jí)模塊)情況。扇出復(fù)雜度高,則表示模塊的復(fù)雜度高,需要控制和協(xié)調(diào)過多的下級(jí)模塊。業(yè)界標(biāo)準(zhǔn)一般小于等于20。

  (3)無注解編碼語句(NCSS):在文件、類和方法中一般分別小于等于2 000、1 500、50。

  (4)N條路徑復(fù)雜度(NPath):表示一個(gè)方法中各種可能的執(zhí)行路徑總和。業(yè)界標(biāo)準(zhǔn)一般小于等于200。

  本節(jié)將測(cè)試上述第2節(jié)中實(shí)現(xiàn)的例子即J2EE軟件開發(fā)中的日志處理,其各個(gè)復(fù)雜度指標(biāo)的實(shí)驗(yàn)數(shù)據(jù)如表1所示。表1各個(gè)復(fù)雜度指標(biāo)實(shí)驗(yàn)數(shù)據(jù)模式CCFOCNCSSNPath基于OOP的策略模式16171 328185基于AOP的策略模式7111 042137

003.jpg

  從表1可以看出,基于AOP的策略模式相對(duì)于傳統(tǒng)的基于OOP的策略模式在各個(gè)復(fù)雜度指標(biāo)上都大大降低。因?yàn)榛贏OP的策略模式把分散在各個(gè)模塊中的公共功能的業(yè)務(wù)邏輯封裝成一個(gè)切面類,然后再織入到各個(gè)模塊中,而不是如傳統(tǒng)的基于OOP的策略模式那樣直接在各個(gè)模塊中重復(fù)編寫那些公共功能的實(shí)現(xiàn),大大降低了代碼的復(fù)雜度。這也表明基于AOP的策略模式很好地解決了傳統(tǒng)的基于OOP的策略模式出現(xiàn)的代碼分散、代碼混亂的問題,是軟件開發(fā)中對(duì)于在各個(gè)模塊中都有的公共功能問題的很好的解決方案。

4應(yīng)用場(chǎng)景

  策略模式將一系列的策略算法封裝成相互獨(dú)立又可相互替換的“針對(duì)接口編程”的模式,而AOP是一種擅長(zhǎng)于處理橫向關(guān)系,將各個(gè)模塊中有別于核心業(yè)務(wù)關(guān)注點(diǎn)的公共功能局部化、模塊化的新的編程范式,兩者皆是為了提高軟件的可擴(kuò)展性、可復(fù)用性。基于AOP的策略模式不僅在處理軟件中橫向關(guān)系需求時(shí)顯得游刃有余,并且使得軟件開發(fā)中開發(fā)人員各司其職。某一領(lǐng)域的專家不可能同時(shí)對(duì)加密、性能、同步、訪問控制、分布等都熟悉精通,而只需知道對(duì)應(yīng)的功能接口的調(diào)用就可以。基于AOP的策略模式可以應(yīng)用在以下方面:

  (1)系統(tǒng)中模塊間的公共功能,且未來可能發(fā)生需求變化。如日志、安全性、性能監(jiān)測(cè)、異常捕獲、認(rèn)證、加密等。

  (2)模塊間的插件。各個(gè)插件即是各種算法功能的策略實(shí)現(xiàn)類,也可在其中添加“鉤子”函數(shù),使插件具備可插拔。

  (3)模塊間的個(gè)性化定制。個(gè)性化的定制是未來對(duì)用戶最具魅力的功能,也是未來個(gè)性化軟件的方向。事先將各種個(gè)性化選擇封裝在策略實(shí)現(xiàn)類中,其基于AOP的實(shí)現(xiàn)使得個(gè)性化的選擇效果應(yīng)用在各個(gè)模塊中。

5結(jié)論

  基于OOP的策略模式雖然已經(jīng)可以很好地實(shí)現(xiàn)策略模式,將一系列策略算法封裝成相互獨(dú)立、相互可替換的策略實(shí)現(xiàn)類,大大提高軟件的可重用性和可擴(kuò)展性,但是由于OOP本身存在的局限性即在解決軟件需求中橫向關(guān)系時(shí)可能出現(xiàn)代碼混亂、代碼分散等問題,使得基于OOP的策略模式在處理這類問題時(shí)代碼可讀性差、效率低、代碼質(zhì)量差、代碼重用率低以及難以維護(hù)難以擴(kuò)展等。本文利用AOP處理橫切關(guān)注點(diǎn)的優(yōu)勢(shì),提出基于AOP的策略模式,很好地解決了傳統(tǒng)基于OOP的策略模式的問題。

參考文獻(xiàn)

  [1] 張海翔,秦翼. 從Java類庫看設(shè)計(jì)模式[J]. 電子世界, 2013(22):13-14.

  [2] 張舒晉. 嵌入式軟件實(shí)用設(shè)計(jì)模式[J]. 自動(dòng)化應(yīng)用, 2015(1):36-38.

  [3] 劉新強(qiáng),韓陽峰. 基于AOP技術(shù)的郵件日志系統(tǒng)研究[J]. 電子設(shè)計(jì)工程,2014,22(18):45-48.

  [4] 幸德波. 基于AOP的J2EE應(yīng)用程序性能監(jiān)控系統(tǒng)研究與實(shí)現(xiàn)[D]. 杭州:浙江大學(xué),2014.

  [5] 趙文杰. 基于AOP的異常處理研究與應(yīng)用[J]. 計(jì)算機(jī)光盤軟件與應(yīng)用,2014(24):66-68.

  [6] 蔣廷耀,王訓(xùn)宇,關(guān)國翔,等. 一種策略模式的AOP實(shí)現(xiàn)及應(yīng)用[J]. 計(jì)算機(jī)應(yīng)用與軟件,2010,27(1):121-123.

  [7] 薛冰. 改進(jìn)AOP技術(shù)在軟件開發(fā)中的應(yīng)用與研究[D]. 大連:大連交通大學(xué),2013.

  [8] 陳發(fā)堂,牛勇清,韓娜娜,等.協(xié)議一致性測(cè)試平臺(tái)的搭建及仿真實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,2014,40(4):137-140.

  [9] 宋建華,稅光澤.無線傳感器網(wǎng)絡(luò)的數(shù)據(jù)安全與隱私保護(hù)[J].微型機(jī)與應(yīng)用,2013,32(3):4-6.


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
国产一级揄自揄精品视频| 亚洲九九九在线观看| 你懂的视频欧美| 欧美在线观看日本一区| 亚洲夜晚福利在线观看| 亚洲美女中出| 亚洲人被黑人高潮完整版| 久久精品国产久精国产一老狼| 亚洲小视频在线| 日韩小视频在线观看| 亚洲精品久久久久久久久久久久久| 在线激情影院一区| 狠狠综合久久av一区二区小说| 国产亚洲欧美色| 国产亚洲激情视频在线| 国产免费一区二区三区香蕉精| 国产精品一区久久久| 国产欧美日韩免费| 国产麻豆精品久久一二三| 国产乱肥老妇国产一区二 | 亚洲综合视频1区| 亚洲一区一卡| 午夜精品一区二区三区在线播放| 亚洲欧美日本伦理| 国产精品美腿一区在线看| 久久免费视频一区| 久久只精品国产| 欧美高清视频在线播放| 欧美日韩精品在线播放| 国产精品大片免费观看| 国产欧美日韩91| 狠狠干综合网| 亚洲国产综合视频在线观看| 99re6热在线精品视频播放速度| av不卡免费看| 亚洲欧美日韩精品久久| 久久精品国产精品亚洲综合| 亚洲三级视频在线观看| 这里只有精品视频在线| 欧美一级大片在线免费观看| 久久精品最新地址| 嫩草伊人久久精品少妇av杨幂| 欧美激情精品久久久久久免费印度| 欧美日韩视频一区二区| 国产欧美精品日韩| 激情懂色av一区av二区av| 亚洲国产片色| 亚洲午夜精品久久久久久app| 欧美一级视频| 日韩视频免费大全中文字幕| 亚洲免费在线| 久久尤物视频| 欧美色网一区二区| 国模吧视频一区| 亚洲精选一区| 欧美一区二区三区在线观看| 亚洲毛片av在线| 亚洲欧美日韩在线| 免费成人黄色av| 国产精品久久久对白| 伊人春色精品| 亚洲性xxxx| 亚洲日本成人| 欧美影院视频| 欧美屁股在线| 国产一区二区日韩精品| 亚洲欧洲免费视频| 午夜日韩在线观看| av不卡在线| 久久久亚洲欧洲日产国码αv | 亚洲免费视频中文字幕| 亚洲高清视频的网址| 亚洲特级片在线| 久久香蕉国产线看观看av| 欧美精品亚洲| 国产一区二区三区久久 | 香蕉视频成人在线观看| 亚洲精品一区二区三区蜜桃久| 午夜日韩电影| 欧美另类视频| 影音欧美亚洲| 性欧美办公室18xxxxhd| 中文av一区二区| 免费短视频成人日韩| 国产欧美日韩精品在线| 妖精视频成人观看www| 亚洲欧洲一二三| 久久经典综合| 国产精品久久久久9999吃药| 亚洲精品国产系列| 亚洲第一区在线观看| 亚洲欧美另类国产| 欧美欧美天天天天操| 影音先锋国产精品| 欧美一区视频| 欧美一级大片在线观看| 欧美天天视频| 亚洲激情亚洲| 亚洲国产一区在线| 久久久久久一区二区三区| 国产精品成人va在线观看| 亚洲人www| 亚洲人成高清| 久久亚洲一区| 国产午夜久久久久| 亚洲免费一在线| 亚洲午夜精品久久| 欧美日韩一二三区| 日韩西西人体444www| 日韩午夜激情| 欧美顶级大胆免费视频| 精品成人乱色一区二区| 欧美在线免费视屏| 久久久九九九九| 国产性做久久久久久| 亚洲欧美高清| 欧美一区二区视频网站| 国产精品久久久久影院色老大| 99国产精品久久久久久久| 99国产精品久久久久老师 | 亚洲福利视频一区| 亚洲福利免费| 蜜桃av一区二区三区| 国模吧视频一区| 久久成人精品| 浪潮色综合久久天堂| 伊甸园精品99久久久久久| 久久国产精品久久久久久| 久久美女艺术照精彩视频福利播放| 国产一区二区高清| 久久精品国产99精品国产亚洲性色 | 美女主播视频一区| 亚洲成色777777在线观看影院| 亚洲片在线观看| 欧美激情视频一区二区三区免费| 91久久综合| 在线一区二区三区四区五区| 欧美精品久久99| 日韩视频三区| 亚洲欧美日韩在线高清直播| 国产精品一区二区你懂得| 性欧美暴力猛交69hd| 欧美中文字幕久久| 国产一区二区中文| 久久精品亚洲国产奇米99| 玖玖视频精品| 亚洲国产视频一区二区| 一本色道久久综合一区| 国产精品www网站| 亚洲欧美春色| 理论片一区二区在线| 亚洲国产精品欧美一二99| 一本色道久久综合狠狠躁篇的优点 | 性娇小13――14欧美| 国产亚洲福利一区| 亚洲国产精品久久91精品| 欧美激情一区二区三区在线视频 | 亚洲一区二区三区色| 国产精品一区二区在线| 亚洲盗摄视频| 欧美日本簧片| 亚洲欧美日韩精品| 蜜臀久久99精品久久久久久9| 日韩午夜免费视频| 久久国产精彩视频| 亚洲高清视频在线| 亚洲欧美美女| 影音先锋亚洲一区| 亚洲一区二区av电影| 国产一区二区三区四区| 99riav国产精品| 国产美女精品视频免费观看| 亚洲激情第一区| 国产精品激情| 亚洲人成人一区二区在线观看| 国产精品hd| 亚洲国产视频直播| 国产精品免费一区豆花| 亚洲国产另类精品专区 | 亚洲精品国产日韩| 国产精品日韩高清| 亚洲激情在线视频| 国产精品区一区| 亚洲人成网站影音先锋播放| 国产精品视频免费一区| 亚洲精品久久久久久下一站| 欧美色播在线播放| 亚洲国产精品va在线观看黑人| 国产精品捆绑调教| 亚洲精品一二区| 国产一区av在线| 亚洲专区在线| 亚洲经典在线| 久久免费国产精品1| 正在播放欧美一区| 欧美大片在线观看一区| 性欧美暴力猛交69hd| 国产精品初高中精品久久| 亚洲人成艺术| 激情亚洲网站|