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

前端的設(shè)計(jì)模式系列-裝飾器模式

開發(fā) 項(xiàng)目管理
代碼也寫了幾年了,設(shè)計(jì)模式處于看了忘,忘了看的狀態(tài),最近對(duì)設(shè)計(jì)模式有了點(diǎn)感覺,索性就再學(xué)習(xí)總結(jié)下吧。

代碼也寫了幾年了,設(shè)計(jì)模式處于看了忘,忘了看的狀態(tài),最近對(duì)設(shè)計(jì)模式有了點(diǎn)感覺,索性就再學(xué)習(xí)總結(jié)下吧。

大部分講設(shè)計(jì)模式的文章都是使用的 Java、C++ 這樣的以類為基礎(chǔ)的靜態(tài)類型語言,作為前端開發(fā)者,js 這門基于原型的動(dòng)態(tài)語言,函數(shù)成為了一等公民,在實(shí)現(xiàn)一些設(shè)計(jì)模式上稍顯不同,甚至簡(jiǎn)單到不像使用了設(shè)計(jì)模式,有時(shí)候也會(huì)產(chǎn)生些困惑。

下面按照「場(chǎng)景」-「設(shè)計(jì)模式定義」- 「代碼實(shí)現(xiàn)」- 「易混設(shè)計(jì)模式」-「總」的順序來總結(jié)一下,如有不當(dāng)之處,歡迎交流討論。

場(chǎng)景

微信小程序定義一個(gè)頁(yè)面是通過微信提供的Page 方法,然后傳入一個(gè)配置對(duì)象進(jìn)去。

Page({
data: { // 參與頁(yè)面渲染的數(shù)據(jù)
logs: []
},
onLoad: function () {
// 頁(yè)面渲染后 執(zhí)行
}
})

如果我們有個(gè)需求是在每個(gè)頁(yè)面加載的時(shí)候上報(bào)一些自定義數(shù)據(jù)。

最直接的當(dāng)然是去每個(gè)頁(yè)面加就好了,但上報(bào)數(shù)據(jù)的邏輯是一致的,一個(gè)一個(gè)加有些傻了,這里就可以用到裝飾器模式了。

裝飾器模式

看下維基百科的定義。

裝飾器(修飾)模式,是面向?qū)ο蟪淌筋I(lǐng)域中,一種動(dòng)態(tài)地往一個(gè)類別中添加新的行為的設(shè)計(jì)模式。就功能而言,修飾模式相比生成子類別更為靈活,這樣可以給某個(gè)對(duì)象而不是整個(gè)類別添加一些功能。

看一下 UML 類圖和次序圖。

當(dāng)訪問 Component1 中的operation 方法時(shí),會(huì)先調(diào)用預(yù)先定義的兩個(gè)裝飾器 Decorator1 和 Decorator2 中的 operation 方法,執(zhí)行一些額外操作,最后再執(zhí)行原始的 operation 方法。

舉一個(gè)簡(jiǎn)單的例子:

買奶茶的話可以額外加珍珠、椰果等,不同小料有不同的價(jià)格、也可以自由組合,此時(shí)就可以用到裝飾器模式,對(duì)原始奶茶進(jìn)行加料、算價(jià)。

原始的奶茶有一個(gè)接口和類。

interface MilkTea {
public double getCost(); // 返回奶茶的價(jià)格
public String getIngredients(); // 返回奶茶的原料
}

class SimpleMilkTea implements MilkTea {
@Override
public double getCost() {
return 10;
}

@Override
public String getIngredients() {
return "MilkTea";
}
}

下邊引入裝飾器,進(jìn)行加料。

// 添加一個(gè)裝飾器的抽象類
abstract class MilkTeaDecorator implements MilkTea {
private final MilkTea decoratedMilkTea;

public MilkTeaDecorator(MilkTea c) {
this.decoratedMilkTea = c;
}

@Override
public double getCost() {
return decoratedMilkTea.getCost();
}

@Override
public String getIngredients() {
return decoratedMilkTea.getIngredients();
}
}

// 添加珍珠
class WithPearl extends MilkTeaDecorator {
public WithPearl(MilkTea c) {
super(c); // 調(diào)用父類構(gòu)造函數(shù)
}

@Override
public double getCost() {
// 調(diào)用父類方法
return super.getCost() + 2;
}

@Override
public String getIngredients() {
// 調(diào)用父類方法
return super.getIngredients() + ", 加珍珠";
}
}

// 添加椰果
class WithCoconut extends MilkTeaDecorator {
public WithCoconut(MilkTea c) {
super(c);
}

@Override
public double getCost() {
return super.getCost() + 1;
}

@Override
public String getIngredients() {
return super.getIngredients() + ", 加椰果";
}
}

讓我們測(cè)試一下,

public class Main {
public static void printInfo(MilkTea c) {
System.out.println("價(jià)格: " + c.getCost() + "; 加料: " + c.getIngredients());
}

public static void main(String[] args) {
MilkTea c = new SimpleMilkTea();
printInfo(c); // 價(jià)格: 10.0; 加料: MilkTea

c = new WithPearl(new SimpleMilkTea());
printInfo(c); // 價(jià)格: 12.0; 加料: MilkTea, 加珍珠

c = new WithCoconut(new WithPearl(new SimpleMilkTea()));
printInfo(c); // 價(jià)格: 13.0; 加料: MilkTea, 加珍珠, 加椰果
}
}

未來如果需要新增一種小料,只需要新寫一個(gè)裝飾器類,并且可以和之前的小料隨意搭配。

// 添加冰淇淋
class WithCream extends MilkTeaDecorator {
public WithCream(MilkTea c) {
super(c);
}

@Override
public double getCost() {
return super.getCost() + 5;
}

@Override
public String getIngredients() {
return super.getIngredients() + ", 加冰淇淋";
}
}

public class Main {
public static void printInfo(MilkTea c) {
System.out.println("價(jià)格: " + c.getCost() + "; 加料: " + c.getIngredients());
}

public static void main(String[] args) {
c = new WithCoconut(new WithCream(new WithPearl(new SimpleMilkTea())));
printInfo(c); // 價(jià)格: 18.0; 加料: MilkTea, 加珍珠, 加冰淇淋, 加椰果
}
}

讓我們用 js 改寫一下,達(dá)到同樣的效果。

const SimpleMilkTea = () => {
return {
getCost() {
return 10;
},

getIngredients() {
return "MilkTea";
},
};
};

// 加珍珠
const WithPearl = (milkTea) => {
return {
getCost() {
return milkTea.getCost() + 2;
},

getIngredients() {
return milkTea.getIngredients() + ", 加珍珠";
},
};
};

// 加椰果
const WithCoconut = (milkTea) => {
return {
getCost() {
return milkTea.getCost() + 1;
},

getIngredients() {
return milkTea.getIngredients() + ", 加椰果";
},
};
};

// 加冰淇淋
const WithCream = (milkTea) => {
return {
getCost() {
return milkTea.getCost() + 5;
},

getIngredients() {
return milkTea.getIngredients() + ", 加冰淇淋";
},
};
};

// test
const printInfo = (c) => {
console.log(
"價(jià)格: " + c.getCost() + "; 加料: " + c.getIngredients()
);
};

let c = SimpleMilkTea();
printInfo(c); // 價(jià)格: 10; 加料: MilkTea

c = WithPearl(SimpleMilkTea());
printInfo(c); // 價(jià)格: 12; 加料: MilkTea, 加珍珠

c = WithCoconut(WithPearl(SimpleMilkTea()));
printInfo(c); // 價(jià)格: 13; 加料: MilkTea, 加珍珠, 加椰果

c = WithCoconut(WithCream(WithPearl(SimpleMilkTea())));
printInfo(c); // 價(jià)格: 18; 加料: MilkTea, 加珍珠, 加冰淇淋, 加椰果

沒有再定義類和接口,js 中用函數(shù)直接表示。

原始的 SimpleMilkTea 方法返回一個(gè)奶茶對(duì)象,然后又定義了三個(gè)裝飾函數(shù),傳入一個(gè)奶茶對(duì)象,返回一個(gè)裝飾后的對(duì)象。

代碼實(shí)現(xiàn)

回到文章最開頭的場(chǎng)景,我們需要為每個(gè)頁(yè)面加載的時(shí)候上報(bào)一些自定義數(shù)據(jù)。其實(shí)我們只需要引入一個(gè)裝飾函數(shù),將傳入的 option 進(jìn)行裝飾返回即可。

const Base = (option) => {
const { onLoad ...rest } = option;
return {
...rest,
// 重寫 onLoad 方法
onLoad(...args) {
// 增加路由字段
this.reportData(); // 上報(bào)數(shù)據(jù)

// onLoad
if (typeof onLoad === 'function') {
onLoad.call(this, ...args);
}
}
reportData() {
// 做一些事情
}
}

然后回到原始頁(yè)面增加 Base 的調(diào)用即可。

Page(Base({
data: { // 參與頁(yè)面渲染的數(shù)據(jù)
logs: []
},
onLoad: function () {
// 頁(yè)面渲染后 執(zhí)行
}
})

同理,利用裝飾器模式我們也可以對(duì)其它生命周期統(tǒng)一插入我們需要做的事情,而不需要業(yè)務(wù)方自己再寫一遍。

在大團(tuán)隊(duì)的話,每個(gè)業(yè)務(wù)方可能都需要在小程序生命周期做一些事情,此時(shí)只需要利用裝飾器模式,編寫一個(gè)裝飾函數(shù),然后在業(yè)務(wù)代碼中調(diào)用即可。

最終的業(yè)務(wù)代碼可能會(huì)裝飾很多層,最終才傳給小程序 Page 函數(shù)。

Page(Base(Log(Ce({
data: { // 參與頁(yè)面渲染的數(shù)據(jù)
logs: []
},
onLoad: function () {
// 頁(yè)面渲染后 執(zhí)行
}
})

易混設(shè)計(jì)模式

如果之前看過代理模式,到這里可能會(huì)有一些困惑,因?yàn)楹痛砟J降淖饔煤芟瘢际菍?duì)原有對(duì)象進(jìn)行包裝,增強(qiáng)原有對(duì)象。

但還是有很大的不同點(diǎn):

代理模式中,我們是直接將原對(duì)象封裝到代理對(duì)象之中,對(duì)于業(yè)務(wù)方并不關(guān)系原始對(duì)象,直接使用代理對(duì)象即可。

裝飾器模式中,我們只提供了裝飾函數(shù),輸入原始對(duì)象,輸出增強(qiáng)對(duì)象。輸出的增強(qiáng)對(duì)象,還可以接著傳入到新的裝飾器函數(shù)中繼續(xù)增強(qiáng)。對(duì)于業(yè)務(wù)方,可以隨意組合裝飾函數(shù),但得有一個(gè)最最開始的原始對(duì)象。

再具體點(diǎn):

代理模式的話,對(duì)象之間的依賴關(guān)系已經(jīng)寫死了,原始對(duì)象 A,新增代理對(duì)象A1, A1 的基礎(chǔ)上再新增代理對(duì)象A2。如果我們不想要 A1 新增的功能了,我們并不能直接使用 A2 ,因?yàn)锳2 已經(jīng)包含了 A1 的功能,我們只能在 A 的基礎(chǔ)上再新寫一個(gè)代理對(duì)象A3。

而裝飾器模式,我們只提供裝飾函數(shù)A1,裝飾函數(shù) A2,然后對(duì)原始對(duì)象進(jìn)行裝飾 A2(A1(A))。如果不想要 A1新增的功能,只需要把 A1 這個(gè)裝飾器去掉,調(diào)用 A2(A) 即可。

所以使用代理模式還是使用裝飾器模式,取決于我們是要把所有功能包裝后最終產(chǎn)出一個(gè)對(duì)象給業(yè)務(wù)方使用,還是提供許多功能,讓業(yè)務(wù)方自由組合。

裝飾器模式同樣踐行了「單一職責(zé)原則」,可以把對(duì)象/函數(shù)的各個(gè)功能獨(dú)立出來,降低它們之間的耦合性。

業(yè)務(wù)開發(fā)中,如果某個(gè)對(duì)象/函數(shù)擁有了太多功能,可以考慮使用裝飾器模式進(jìn)行拆分。


責(zé)任編輯:武曉燕 來源: windliang
相關(guān)推薦

2023-09-04 13:14:00

裝飾器設(shè)計(jì)模式

2023-12-13 13:28:16

裝飾器模式Python設(shè)計(jì)模式

2022-02-06 22:30:36

前端設(shè)計(jì)模式

2022-02-11 10:22:48

模版模式語言

2022-02-15 22:45:00

前端設(shè)計(jì)模式

2020-11-09 08:20:33

解釋器模式

2022-01-29 22:12:35

前端模式觀察者

2022-02-13 23:33:24

設(shè)計(jì)模式Java

2024-02-23 12:11:53

裝飾器模式對(duì)象

2021-06-22 15:27:13

設(shè)計(jì)模式迭代器模式Java

2022-03-25 11:01:28

Golang裝飾模式Go 語言

2020-12-01 07:16:05

重學(xué)設(shè)計(jì)模式

2020-11-03 13:05:18

命令模式

2020-11-04 08:54:54

狀態(tài)模式

2020-10-23 09:40:26

設(shè)計(jì)模式

2022-01-12 13:33:25

工廠模式設(shè)計(jì)

2020-11-06 09:01:46

迭代器模式

2020-10-20 13:33:00

建造者模式

2012-01-13 15:59:07

2021-10-26 00:21:19

設(shè)計(jì)模式建造者
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

波多野结衣在线播放一区| 免费大片在线观看www| 一本不卡影院| 中日韩午夜理伦电影免费 | 成人免费高清观看| 久久久www成人免费无遮挡大片| 国产97在线|日韩| 免费三级在线观看| 欧美变态挠脚心| 欧美性感一类影片在线播放| 国产欧美精品aaaaaa片| 日韩二区三区| 国产精品77777| 国产精品都在这里| 99视频在线看| 中文字幕一区二区三三| 亚洲欧美一区二区三区情侣bbw| 91插插插影院| 欧美美女日韩| 一区二区三区在线观看视频 | 欧美熟妇精品一区二区| 三级成人黄色影院| 亚洲成a人片在线不卡一二三区| 亚洲精品国产系列| 天天操天天干天天干| 韩国av一区二区三区四区| 国产z一区二区三区| 精品在线视频免费| 一本精品一区二区三区| 中文字幕av一区二区三区谷原希美 | 麻豆一区在线观看| 免费短视频成人日韩| 日韩一级二级三级| 狠狠热免费视频| 色网在线免费观看| 性做久久久久久免费观看| 先锋影音男人资源| 日本a级在线| 国产日韩欧美精品在线| 极品尤物一区二区三区| 午夜免费福利视频| 国产一区二区福利视频| 91精品国产自产在线老师啪 | 成人在线小视频| 无码人妻av一区二区三区波多野| 99国产精品| 国模叶桐国产精品一区| 久久久精品国产sm调教网站| 图片区亚洲欧美小说区| www.久久久久| 亚洲天堂精品一区| 日本黄色精品| 色小说视频一区| 美女100%露胸无遮挡| 欧美亚洲国产一区| 中文字幕日韩电影| 2014亚洲天堂| 中文无码久久精品| 欧美巨猛xxxx猛交黑人97人| 亚洲伦理一区二区三区| 91精品国产自产拍在线观看蜜| 最新中文字幕亚洲| 亚洲女人久久久| 国产精品久久占久久| 久久精品国产亚洲一区二区| 日韩激情综合网| 欧美日一区二区在线观看| 欧美激情精品久久久久久久变态| 国产亚洲欧美精品久久久久久| 伊人激情综合| 国产91精品黑色丝袜高跟鞋| 日本中文字幕在线观看视频| 美女网站在线免费欧美精品| 成人xxxxx| 亚洲黄色a级片| www精品美女久久久tv| 欧美自拍资源在线| 国产在线激情视频| 亚洲国产精品影院| 久久美女福利视频| 色诱色偷偷久久综合| 欧美tickling挠脚心丨vk| 在线免费观看污视频| 狠狠操综合网| 欧美成年人视频| 成人免费视频毛片| 久久精品国产一区二区三| 97夜夜澡人人双人人人喊| 视频一区二区三区在线看免费看| 美女日韩一区| 日韩欧美国产一区在线观看| 超碰男人的天堂| 色婷婷色综合| 91av视频导航| 国产精品久久久久久免费| 成人免费毛片片v| 日韩欧美激情一区二区| 欧美亚洲系列| 欧洲精品视频在线观看| 精人妻一区二区三区| 精品国产网站| 国产做受高潮69| 中文字幕在线观看高清| 国产不卡免费视频| 亚洲精品日韩成人| 国产激情视频在线看| 欧美精选午夜久久久乱码6080| 国产玉足脚交久久欧美| 625成人欧美午夜电影| 91麻豆精品91久久久久同性| 美国黄色a级片| 欧美精选在线| 国产精品精品视频| 天堂中文在线资源| 亚洲六月丁香色婷婷综合久久 | 久久综合久久综合这里只有精品| a√资源在线| 精品福利在线观看| 中文字幕第一页在线视频| 国产成人ay| 91精品国产高清久久久久久| 精品国精品国产自在久不卡| 亚洲国产经典视频| 东京热加勒比无码少妇| 国产精品22p| 欧美成人激情图片网| 亚洲中文一区二区三区| 久久久久综合网| av在线播放天堂| 亚洲性视频在线| 欧美成人第一页| 国产人妻精品一区二区三区| 国产视频亚洲色图| 91精品91久久久中77777老牛| 国产日韩中文在线中文字幕| 一区二区三区黄色| 日本中文字幕久久| 91社区在线播放| 亚洲熟妇无码另类久久久| 一区二区三区国产好| 麻豆国产精品va在线观看不卡| 综合久久中文字幕| 国产日本欧洲亚洲| 精品免费国产一区二区| 欧美综合精品| 日本精品久久电影| 午夜国产在线观看| 欧美日韩中文在线| 一女三黑人理论片在线| 亚洲精品影视| 乱一区二区三区在线播放| 午夜激情电影在线播放| 亚洲精品电影网站| 日韩一区二区视频在线| 91日韩精品一区| www.xxx亚洲| 日韩精品诱惑一区?区三区| 国产欧美精品在线播放| 国产剧情在线| 精品黑人一区二区三区久久| 国产精品成人aaaa在线| av亚洲精华国产精华| 夜夜添无码一区二区三区| 国产主播性色av福利精品一区| 国内精品久久久久伊人av| 日本国产在线观看| 欧美日韩亚洲精品一区二区三区| 欧美做受高潮6| 理论电影国产精品| 欧洲美女和动交zoz0z| 日韩精品视频中文字幕| 午夜精品一区二区三区av| 日韩av资源| 欧美怡红院视频| 成人免费视频网站入口::| 东方欧美亚洲色图在线| av免费观看网| 日韩在线高清| 国产伦精品一区二区三区四区视频| 色综合亚洲图丝熟| 中文字幕综合一区| 亚洲国产精品无码久久| 日本韩国欧美三级| 波多野结衣爱爱视频| 成人av动漫在线| 国产wwwxx| 欧美一区视频| 欧美日韩亚洲在线| 日韩成人在线一区| 78m国产成人精品视频| 无遮挡的视频在线观看| 精品日产卡一卡二卡麻豆| 免费无码国产精品| 亚洲影视资源网| 337人体粉嫩噜噜噜| 国产成人99久久亚洲综合精品| 日本在线观看a| 你懂的亚洲视频| 视频一区国产精品| 国产日韩三级| 成人性生交xxxxx网站| 伊人色综合一区二区三区影院视频| 日韩在线观看免费全| 免费在线视频一级不卡| 日韩免费看网站| 欧美三级网站在线观看| 亚洲一二三区在线观看| jizzjizzjizz国产| 91香蕉视频mp4| 精品人妻一区二区乱码| 日韩不卡一区二区| 少妇av一区二区三区无码| 2023国产精品久久久精品双 | 91蜜臀精品国产自偷在线 | 精品无吗乱吗av国产爱色| 日韩免费观看高清完整版 | 国产一级一片免费播放| 中文字幕不卡的av| 欧美高清性xxxx| 成人激情免费网站| 91aaa精品| 美女性感视频久久| 日本va中文字幕| 国产美女一区| 国产在线播放观看| 欧美视频不卡| 毛片在线视频观看| 五月开心六月丁香综合色啪| 日韩中文字幕一区| 国产不卡一区| 日本不卡一区二区三区在线观看 | 污污污污污污www网站免费| 久久看人人摘| 欧美极品一区二区| 制服丝袜日韩| 日本午夜一区二区三区| 亚洲瘦老头同性70tv| 久久影院理伦片| 西野翔中文久久精品字幕| 欧美精品18videos性欧| 黄色精品在线观看| 久久久国产成人精品| 免费黄色电影在线观看| 久久激情视频免费观看| 麻豆tv在线| 久久亚洲精品一区二区| 国产盗摄在线观看| 色综合久综合久久综合久鬼88| а√资源新版在线天堂| 大胆欧美人体视频| 性欧美高清come| 高清一区二区三区四区五区| 久草在线中文最新视频| 青草青草久热精品视频在线网站 | 欧美日韩在线三区| 91禁在线观看| 91精品国产入口| 好吊视频一区二区三区| 亚洲国产高清高潮精品美女| 四虎成人免费在线| 国产一区二区三区高清在线观看| 黄色av网站在线免费观看| 中文字幕日韩精品在线| 97caopron在线视频| 久久久亚洲成人| 自拍偷拍亚洲视频| 国产精品视频在线播放| 美女久久精品| 久久riav二区三区| 精品国产精品久久一区免费式| 亚洲人成人77777线观看| 欧美ab在线视频| 3d动漫一区二区三区| 日精品一区二区| 色偷偷中文字幕| 91麻豆精品在线观看| 欧美午夜激情影院| 亚洲精品成人精品456| 久久午夜免费视频| 欧美日韩一区二区三区视频 | 亚洲精品二三区| 国产对白叫床清晰在线播放| 久久精品99国产精品酒店日本 | 五月天一区二区三区| 天堂网一区二区| 日韩午夜激情免费电影| 免费理论片在线观看播放老| 久久五月天综合| 天堂电影一区| 国产在线精品成人一区二区三区| 国产福利资源一区| 一区二区三区电影| 一本久久知道综合久久| 在线观看国产福利| 91视频免费看| 久久久久亚洲av片无码下载蜜桃 | 国产69精品久久久久9| 日韩经典一区| 精品国产乱码久久久久久蜜柚| 日韩精品不卡一区二区| 人妻无码久久一区二区三区免费| 奇米综合一区二区三区精品视频| 亚洲成年人在线观看| 国产精品美女久久久久久久久| 日韩污视频在线观看| 在线不卡一区二区| 国产在线播放av| 91国在线精品国内播放| 美国十次综合久久| 涩涩日韩在线| 亚洲资源av| 亚洲香蕉中文网| 专区另类欧美日韩| 亚洲毛片一区二区三区| 亚洲国产精品久久久| huan性巨大欧美| 国产精品一区电影| 九九综合久久| 精品视频在线观看一区| 国产一区二区三区香蕉| 五月婷婷欧美激情| 日韩欧美亚洲综合| 特黄aaaaaaaaa真人毛片| 美女性感视频久久久 | 国产精品一区在线观看| 自拍偷拍欧美专区| 不卡的在线视频| 欧美国产一区二区在线观看| 日韩欧美在线观看免费| 亚洲精品久久久久中文字幕欢迎你 | 久久网站热最新地址| 日韩精品一卡二卡| 精品福利一区二区三区免费视频| 最近中文字幕免费mv2018在线| 成人免费大片黄在线播放| 四虎成人av| 黄大色黄女片18第一次| 亚洲国产精品99久久久久久久久 | 欧美成人ⅴideosxxxxx| 久久手机视频| 国产视频一区在线观看一区免费| 国产十八熟妇av成人一区| 五月婷婷综合激情| 午夜影院免费体验区| 97av在线播放| 中文字幕亚洲影视| 日韩一级片播放| 国产精品欧美一级免费| 亚洲在线精品视频| 久久综合免费视频| 日韩三级不卡| 免费观看国产精品视频| aaa亚洲精品一二三区| 啦啦啦免费高清视频在线观看| 亚洲精品视频网上网址在线观看| 欧美大片高清| 亚洲欧美国产精品桃花| 黄色小说综合网站| 久视频在线观看| 亚洲精选中文字幕| 韩日一区二区| 无码毛片aaa在线| 成人激情黄色小说| 久久99国产综合精品免费| 亚洲最新视频在线| 精品国产亚洲一区二区三区大结局| 今天免费高清在线观看国语| 成人av在线资源网站| 国产尤物在线视频| 中文国产成人精品久久一| 激情综合五月| 欧美日韩精品在线一区二区 | 一区二区精品在线观看| 国产精品一区二区黑丝| 中文字幕在线字幕中文| 亚洲香蕉av在线一区二区三区| gogo大尺度成人免费视频| 久操网在线观看| 欧美国产1区2区| 精品黑人一区二区三区在线观看| 98精品国产自产在线观看 | 日韩中文字幕亚洲| 岛国精品一区| 韩国日本美国免费毛片| 亚洲欧美另类日韩| 久久久久999| 欧美黄色录像| 国产三级生活片| 天天射综合影视| 国产原创视频在线观看| 精品一区久久| 国产主播一区二区三区| 欧美亚洲精品天堂| 久久九九有精品国产23| 亚洲精品无吗| 精品人妻一区二区乱码| 欧美中文字幕不卡| 国产在线拍揄自揄拍视频| 亚洲一区二区三区精品动漫| 95精品视频在线|