那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

設(shè)計(jì)模式:訪問(wèn)者設(shè)計(jì)模式

冬至子 ? 來(lái)源:墨風(fēng)如雪小站 ? 作者:墨風(fēng)如雪 ? 2023-06-06 11:25 ? 次閱讀

一、概述

1.1 定義

訪問(wèn)者設(shè)計(jì)模式是一種行為型設(shè)計(jì)模式,用于將算法與對(duì)象結(jié)構(gòu)分離。它允許你在不改變對(duì)象結(jié)構(gòu)的前提下定義新的操作。

1.2 作用

訪問(wèn)者模式的作用是在不改變對(duì)象結(jié)構(gòu)的前提下定義新的操作。它允許你定義一個(gè)新的操作,而無(wú)需修改現(xiàn)有的對(duì)象結(jié)構(gòu)。在訪問(wèn)者模式中,我們將操作封裝在訪問(wèn)者對(duì)象中,并在元素對(duì)象上調(diào)用訪問(wèn)者對(duì)象的方法,從而實(shí)現(xiàn)對(duì)元素對(duì)象的操作。

1.3 適用場(chǎng)景

訪問(wèn)者模式適用于以下場(chǎng)景:

?對(duì)象結(jié)構(gòu)穩(wěn)定,但是經(jīng)常需要在此結(jié)構(gòu)上定義新的操作;?需要對(duì)復(fù)雜對(duì)象結(jié)構(gòu)中的對(duì)象進(jìn)行操作,而且這些對(duì)象可能具有不同的類型;?需要在不改變對(duì)象結(jié)構(gòu)的前提下,為對(duì)象結(jié)構(gòu)中的元素對(duì)象動(dòng)態(tài)添加新的操作。

二、角色

2.1 抽象訪問(wèn)者(Visitor)

抽象訪問(wèn)者(Visitor)定義了訪問(wèn)者可以訪問(wèn)的元素對(duì)象的接口。它包含了多個(gè) visit() 方法,每個(gè)方法對(duì)應(yīng)一個(gè)具體元素對(duì)象。

publicinterfaceVisitor{
void visit(ConcreteElementA elementA);
void visit(ConcreteElementB elementB);
}

在上述代碼中,我們定義了一個(gè)抽象訪問(wèn)者接口 Visitor,它包含了兩個(gè) visit() 方法,分別對(duì)應(yīng)具體元素對(duì)象 ConcreteElementA 和 ConcreteElementB。

2.2 具體訪問(wèn)者(ConcreteVisitor)

具體訪問(wèn)者(ConcreteVisitor)實(shí)現(xiàn)了抽象訪問(wèn)者接口,對(duì)不同類型的元素對(duì)象進(jìn)行具體的操作。

publicclassConcreteVisitorAimplementsVisitor{
@Override
publicvoid visit(ConcreteElementA elementA){
System.out.println("ConcreteVisitorA visit ConcreteElementA");
}


@Override
publicvoid visit(ConcreteElementB elementB){
System.out.println("ConcreteVisitorA visit ConcreteElementB");
}
}


publicclassConcreteVisitorBimplementsVisitor{
@Override
publicvoid visit(ConcreteElementA elementA){
System.out.println("ConcreteVisitorB visit ConcreteElementA");
}


@Overridepublicvoid visit(ConcreteElementB elementB){
System.out.println("ConcreteVisitorB visit ConcreteElementB");
}
}

在上述代碼中,我們定義了兩個(gè)具體訪問(wèn)者類 ConcreteVisitorA 和 ConcreteVisitorB,它們分別實(shí)現(xiàn)了抽象訪問(wèn)者接口 Visitor,并對(duì)不同類型的元素對(duì)象進(jìn)行具體的操作。

2.3 抽象元素(Element)

抽象元素(Element)定義了元素對(duì)象的接口,讓訪問(wèn)者對(duì)象可以訪問(wèn)自己的元素對(duì)象。

publicinterfaceElement{
void accept(Visitor visitor);
}

在上述代碼中,我們定義了一個(gè)抽象元素接口 Element,它包含了一個(gè) accept() 方法,該方法接收一個(gè)訪問(wèn)者對(duì)象作為參數(shù)

2.4 具體元素(ConcreteElement)

具體元素(ConcreteElement)實(shí)現(xiàn)了抽象元素接口,定義了自己的 accept() 方法,該方法調(diào)用訪問(wèn)者對(duì)象的 visit() 方法,并將自身作為參數(shù)傳入。

publicclassConcreteElementAimplementsElement{
@Override
publicvoid accept(Visitor visitor){
        visitor.visit(this);
}
}


publicclassConcreteElementBimplementsElement{
@Override
publicvoid accept(Visitor visitor){
        visitor.visit(this);
}
}

在上述代碼中,我們定義了兩個(gè)具體元素類 ConcreteElementA 和 ConcreteElementB,它們分別實(shí)現(xiàn)了抽象元素接口 Element,并在 accept() 方法中調(diào)用訪問(wèn)者對(duì)象的 visit() 方法,并將自身作為參數(shù)傳入。

2.5 對(duì)象結(jié)構(gòu)(Object Structure)

對(duì)象結(jié)構(gòu)(Object Structure)是元素對(duì)象的集合,它提供了一個(gè)接口,讓訪問(wèn)者對(duì)象可以訪問(wèn)集合中的元素對(duì)象。

publicclassObjectStructure{
privateList< Element > elements =newArrayList<  >();


publicvoid attach(Element element){
        elements.add(element);
}


publicvoid detach(Element element){
        elements.remove(element);
}


publicvoid accept(Visitor visitor){
for(Element element : elements){
            element.accept(visitor);
}
}
}

在上述代碼中,我們定義了一個(gè)對(duì)象結(jié)構(gòu)類 ObjectStructure,它包含了一個(gè)元素對(duì)象的集合 elements,提供了 attach() 和 detach() 方法,用于添加和刪除元素對(duì)象。它還提供了一個(gè) accept() 方法,該方法遍歷元素對(duì)象集合,并調(diào)用每個(gè)元素對(duì)象的accept() 方法,將訪問(wèn)者對(duì)象作為參數(shù)傳入。

三、實(shí)現(xiàn)步驟

3.1 創(chuàng)建抽象元素類

publicinterfaceElement{
void accept(Visitor visitor);
}

3.2 創(chuàng)建具體元素類

publicclassConcreteElementAimplementsElement{
@Override
publicvoid accept(Visitor visitor){
        visitor.visit(this);
}
}


publicclassConcreteElementBimplementsElement{
@Override
publicvoid accept(Visitor visitor){
        visitor.visit(this);
}
}

3.3 創(chuàng)建抽象訪問(wèn)者類

publicinterfaceVisitor{
void visit(ConcreteElementA elementA);
void visit(ConcreteElementB elementB);
}

3.4 創(chuàng)建具體訪問(wèn)者類

publicclassConcreteVisitorAimplementsVisitor{
@Override
publicvoid visit(ConcreteElementA elementA){
System.out.println("ConcreteVisitorA visit ConcreteElementA");
}


@Override
publicvoid visit(ConcreteElementB elementB){
System.out.println("ConcreteVisitorA visit ConcreteElementB");
}
}


publicclassConcreteVisitorBimplementsVisitor{
@Override
publicvoid visit(ConcreteElementA elementA){
System.out.println("ConcreteVisitorB visit ConcreteElementA");
}


@Override
    publicvoid visit(ConcreteElementB elementB){
System.out.println("ConcreteVisitorB visit ConcreteElementB");
}
}

3.5 創(chuàng)建對(duì)象結(jié)構(gòu)類

publicclassObjectStructure{
privateList< Element > elements =newArrayList<  >();


publicvoid attach(Element element){
        elements.add(element);
}


publicvoid detach(Element element){
        elements.remove(element);
}


publicvoid accept(Visitor visitor){
for(Element element : elements){
            element.accept(visitor);
}
}
}

3.6 客戶端調(diào)用

publicclassClient{
publicstaticvoid main(String[] args){
ObjectStructure objectStructure =newObjectStructure();
        objectStructure.attach(newConcreteElementA());
        objectStructure.attach(newConcreteElementB());


Visitor visitorA =newConcreteVisitorA();
Visitor visitorB =newConcreteVisitorB();


        objectStructure.accept(visitorA);
        objectStructure.accept(visitorB);
}
}

在上述代碼中,我們創(chuàng)建了一個(gè)對(duì)象結(jié)構(gòu) objectStructure,并向其中添加了兩個(gè)元素對(duì)象 ConcreteElementA 和 ConcreteElementB。然后,我們創(chuàng)建了兩個(gè)具體訪問(wèn)者對(duì)象 visitorA 和 visitorB,并調(diào)用 objectStructure 的 accept() 方法,將這兩個(gè)訪問(wèn)者對(duì)象作為參數(shù)傳入。在 accept() 方法中,我們遍歷元素對(duì)象集合 elements,并依次調(diào)用每個(gè)元素對(duì)象的 accept() 方法,將訪問(wèn)者對(duì)象作為參數(shù)傳入。

四、優(yōu)缺點(diǎn)

4.1 優(yōu)點(diǎn)

訪問(wèn)者設(shè)計(jì)模式的優(yōu)點(diǎn)包括:

?可以在不改變對(duì)象結(jié)構(gòu)的前提下定義新的操作;?可以將代碼的穩(wěn)定性和易于擴(kuò)展性相結(jié)合;?可以使得增加新的操作變得簡(jiǎn)單。

4.2 缺點(diǎn)

訪問(wèn)者設(shè)計(jì)模式的缺點(diǎn)包括:

?增加新的元素對(duì)象比較困難;?元素對(duì)象的訪問(wèn)者接口必須穩(wěn)定,否則會(huì)導(dǎo)致所有訪問(wèn)者對(duì)象都需要進(jìn)行修改;?具體元素對(duì)象對(duì)訪問(wèn)者對(duì)象的訪問(wèn)是單向的,訪問(wèn)者對(duì)象無(wú)法訪問(wèn)元素對(duì)象的其他方法。

五、擴(kuò)展點(diǎn)

5.1 雙重分派

在訪問(wèn)者設(shè)計(jì)模式中,我們可以通過(guò)雙重分派來(lái)實(shí)現(xiàn)不同的操作。雙重分派是指在訪問(wèn)者對(duì)象中定義了多個(gè)具體的 visit() 方法,每個(gè)方法對(duì)應(yīng)一個(gè)具體元素對(duì)象,然后在元素對(duì)象中調(diào)用訪問(wèn)者對(duì)象的 visit() 方法,并將自身作為參數(shù)傳入。

雙重分派的實(shí)現(xiàn)方式是通過(guò)重載 accept() 方法來(lái)實(shí)現(xiàn)的。具體來(lái)說(shuō),我們?cè)诔橄笤亟涌?Element 中定義多個(gè) accept() 方法,每個(gè)方法對(duì)應(yīng)一個(gè)具體訪問(wèn)者對(duì)象,并在具體元素對(duì)象中重載這些 accept() 方法,將具體訪問(wèn)者對(duì)象作為參數(shù)傳入。

下面是一個(gè)雙重分派的示例代碼:

publicinterfaceElement{
void accept(Visitor visitor);
void accept(Visitor visitor,String param);
}


publicclassConcreteElementAimplementsElement{
@Override
publicvoid accept(Visitor visitor){
        visitor.visit(this);
}


@Override
publicvoid accept(Visitor visitor,String param){
        visitor.visit(this, param);
}
}


publicinterfaceVisitor{
void visit(ConcreteElementA elementA);
void visit(ConcreteElementB elementB);
void visit(ConcreteElementA elementA,String param);
}


publicclassConcreteVisitorAimplementsVisitor{
@Override
publicvoid visit(ConcreteElementA elementA){
System.out.println("ConcreteVisitorA visit ConcreteElementA");
}


@Override
publicvoid visit(ConcreteElementB elementB){
System.out.println("ConcreteVisitorA visit ConcreteElementB");
}


@Override
publicvoid visit(ConcreteElementA elementA,String param){
System.out.println("ConcreteVisitorA visit ConcreteElementA with param "+ param);
}
}


publicclassConcreteVisitorBimplementsVisitor{
@Override
publicvoid visit(ConcreteElementA elementA){
System.out.println("ConcreteVisitorB visit ConcreteElementA");
}


@Override
publicvoid visit(ConcreteElementB elementB){
System.out.println("ConcreteVisitorB visit ConcreteElementB");
}


@Override
publicvoid visit(ConcreteElementA elementA,String param){
System.out.println("ConcreteVisitorB visit ConcreteElementA with param "+ param);
}
}


publicclassObjectStructure{
privateList< Element > elements =newArrayList<  >();


publicvoid attach(Element element){
        elements.add(element);
}


publicvoid detach(Element element){
        elements.remove(element);
}


publicvoid accept(Visitor visitor){
for(Element element : elements){
            element.accept(visitor);
}
}


publicvoid accept(Visitor visitor,String param){
for(Element element : elements){
            element.accept(visitor, param);
}
}
}


publicclassClient{
publicstaticvoid main(String[] args){
ObjectStructure objectStructure =newObjectStructure();
        objectStructure.attach(newConcreteElementA());
        objectStructure.attach(newConcreteElementB());


Visitor visitorA =newConcreteVisitorA();
Visitor visitorB =newConcreteVisitorB();


        objectStructure.accept(visitorA);
        objectStructure.accept(visitorB);
        objectStructure.accept(visitorA,"paramA");
        objectStructure.accept(visitorB,"paramB");
}
}

在上述代碼中,我們定義了一個(gè)新的 accept() 方法,該方法接收一個(gè)額外的參數(shù) param,并在具體元素對(duì)象的 accept() 方法中將該參數(shù)傳遞給訪問(wèn)者對(duì)象的 visit() 方法。然后,我們創(chuàng)建了兩個(gè)具體訪問(wèn)者對(duì)象 visitorA 和 visitorB,并分別調(diào)用 objectStructure 的 accept() 方法,將這兩個(gè)訪問(wèn)者對(duì)象作為參數(shù)傳入,并在第二個(gè) accept() 方法中傳遞了參數(shù) "paramA" 和 "paramB"。在訪問(wèn)者對(duì)象的 visit() 方法中,我們可以根據(jù)傳遞的參數(shù)進(jìn)行不同的操作。

雙重分派的優(yōu)點(diǎn)是可以根據(jù)傳遞的參數(shù)實(shí)現(xiàn)不同的操作,從而增強(qiáng)了訪問(wèn)者模式的靈活性和擴(kuò)展性。

然而,雙重分派也有一些缺點(diǎn)。首先,它會(huì)導(dǎo)致類的層次結(jié)構(gòu)變得復(fù)雜,因?yàn)槊總€(gè)具體元素對(duì)象都需要實(shí)現(xiàn)多個(gè) accept() 方法。其次,雙重分派會(huì)增加代碼的復(fù)雜性,因?yàn)樾枰谠L問(wèn)者對(duì)象中定義多個(gè)具體的 visit() 方法,并在具體元素對(duì)象中重載多個(gè) accept() 方法。最后,雙重分派可能會(huì)導(dǎo)致代碼的可讀性變差,因?yàn)樾枰斫舛鄠€(gè)層次的調(diào)用關(guān)系。

因此,在使用雙重分派時(shí)需要謹(jǐn)慎考慮,避免過(guò)度使用,以免導(dǎo)致代碼的復(fù)雜性和可維護(hù)性下降。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Elements
    +關(guān)注

    關(guān)注

    0

    文章

    6

    瀏覽量

    5329
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    如何判斷訪問(wèn)者的瀏覽器是否打開(kāi)了JAVASCRIPT功能?

    如何判斷訪問(wèn)者的瀏覽器是否打開(kāi)了JAVASCRIPT功能?作者:Hunte | 收錄日期 : 2000-08-21   用這段代碼就可以了
    發(fā)表于 01-11 09:33

    狀態(tài)機(jī)模式與生產(chǎn)/消費(fèi)模式的關(guān)系

    原來(lái)有些明白,但是現(xiàn)在又有點(diǎn)糊涂了 ,狀態(tài)機(jī)模式和生產(chǎn)/消費(fèi)模式之間到底有沒(méi)有關(guān)系?有的話到底是什么樣子的關(guān)系?求大神解釋!!!!!
    發(fā)表于 03-04 11:37

    基于觀察模式的屏幕布局控件設(shè)計(jì)

    觀察模式作為設(shè)計(jì)模式中行為模式的一種,解決了上述具有一對(duì)多依賴關(guān)系對(duì)象重用問(wèn)題。文中在分析觀察模式
    發(fā)表于 02-13 16:20 ?4次下載
    基于觀察<b class='flag-5'>者</b><b class='flag-5'>模式</b>的屏幕布局控件設(shè)計(jì)

    Java設(shè)計(jì)模式(二十一):中介模式

    中介模式(Mediator Pattern) 中介模式(Mediator Pattern): 屬于對(duì)象的行為模式。又叫調(diào)停
    發(fā)表于 01-24 11:28 ?320次閱讀

    配置Nginx訪問(wèn)日志

    每當(dāng)處理客戶請(qǐng)求時(shí),Nginx都會(huì)在訪問(wèn)日志中生成一個(gè)新記錄。每個(gè)事件記錄都包含一個(gè)時(shí)間戳,并包含有關(guān)客戶端和所請(qǐng)求資源的各種信息。訪問(wèn)日志可以顯示訪問(wèn)者的位置,訪問(wèn)者
    的頭像 發(fā)表于 05-24 09:59 ?2363次閱讀

    嵌入式軟件設(shè)計(jì)模式 好文值得收藏

    本文引用自本人公眾號(hào)文章: 嵌入式開(kāi)發(fā)中的兩點(diǎn)編程思想 ? C語(yǔ)言也很講究設(shè)計(jì)模式?一文講透 ? 包含如下: 01)C語(yǔ)言和設(shè)計(jì)模式(繼承、封裝、多態(tài)) ? 02)C語(yǔ)言和設(shè)計(jì)模式訪問(wèn)者
    的頭像 發(fā)表于 06-20 09:09 ?2022次閱讀

    GoF設(shè)計(jì)模式訪問(wèn)者模式

    訪問(wèn)者模式的目的是,解耦數(shù)據(jù)結(jié)構(gòu)和算法,使得系統(tǒng)能夠在不改變現(xiàn)有代碼結(jié)構(gòu)的基礎(chǔ)上,為對(duì)象新增一種新的操作。
    的頭像 發(fā)表于 10-08 11:05 ?740次閱讀

    用C語(yǔ)言編寫(xiě)建造模式

    建造模式: 也稱生成器模式,是 23 種設(shè)計(jì)模式中的一種,是一種創(chuàng)建型模式。適用情況:一個(gè)對(duì)象比較復(fù)雜,將一個(gè)對(duì)象的構(gòu)建和對(duì)象的表示進(jìn)行分
    發(fā)表于 06-05 11:31 ?581次閱讀
    用C語(yǔ)言編寫(xiě)建造<b class='flag-5'>者</b><b class='flag-5'>模式</b>

    設(shè)計(jì)模式行為型:中介模式

    提供一個(gè)中介完成對(duì)一系列操作的封裝,降低對(duì)象間的系統(tǒng)耦合度。中介模式又稱為調(diào)停模式
    的頭像 發(fā)表于 06-06 17:42 ?738次閱讀
    設(shè)計(jì)<b class='flag-5'>模式</b>行為型:中介<b class='flag-5'>模式</b>

    設(shè)計(jì)模式行為型:訪問(wèn)者模式

    訪問(wèn)者模式(Visitor Pattern)中,我們使用了一個(gè)訪問(wèn)者類,它改變了元素類的執(zhí)行算法。
    的頭像 發(fā)表于 06-07 15:11 ?790次閱讀
    設(shè)計(jì)<b class='flag-5'>模式</b>行為型:<b class='flag-5'>訪問(wèn)者</b><b class='flag-5'>模式</b>

    設(shè)計(jì)模式行為型:觀察模式

    定義對(duì)象之間的一種一對(duì)多依賴關(guān)系,使得每一個(gè)對(duì)象發(fā)生狀態(tài)的變化時(shí),其相關(guān)依賴對(duì)象皆得到通知并被自動(dòng)更新,又稱為發(fā)布-訂閱模式、模型-視圖模式、源-監(jiān)聽(tīng)器模式或從屬
    的頭像 發(fā)表于 06-07 16:56 ?713次閱讀
    設(shè)計(jì)<b class='flag-5'>模式</b>行為型:觀察<b class='flag-5'>者</b><b class='flag-5'>模式</b>

    設(shè)計(jì)模式創(chuàng)造性:建造模式

    建造模式(Builder Pattern)使用多個(gè)簡(jiǎn)單的對(duì)象一步一步構(gòu)建成一個(gè)復(fù)雜的對(duì)象。這種類型的設(shè)計(jì)模式屬于創(chuàng)建型模式,它提供了一種創(chuàng)建對(duì)象的最佳方式。
    的頭像 發(fā)表于 06-09 16:25 ?770次閱讀
    設(shè)計(jì)<b class='flag-5'>模式</b>創(chuàng)造性:建造<b class='flag-5'>者</b><b class='flag-5'>模式</b>

    UVM設(shè)計(jì)模式訪問(wèn)者模式

    Visitor Pattern: 允許一個(gè)或者多個(gè)操作應(yīng)用到一組對(duì)象上,解耦操作和對(duì)象本身。換言之,如果component的數(shù)據(jù)結(jié)構(gòu)是比較穩(wěn)定的,但其是易于變化的,那么使用訪問(wèn)者模式是個(gè)不錯(cuò)的選擇。
    的頭像 發(fā)表于 08-11 09:28 ?818次閱讀
    UVM設(shè)計(jì)<b class='flag-5'>模式</b>之<b class='flag-5'>訪問(wèn)者</b><b class='flag-5'>模式</b>

    設(shè)計(jì)模式中代理模式的使用場(chǎng)景

    官方定義: 代理模式 (Proxy Pattern) 是一種結(jié)構(gòu)型設(shè)計(jì)模式,通過(guò)代理對(duì)象控制對(duì)原對(duì)象的訪問(wèn),并允許在訪問(wèn)前或訪問(wèn)后做一些處理
    的頭像 發(fā)表于 10-08 14:34 ?1093次閱讀
    設(shè)計(jì)<b class='flag-5'>模式</b>中代理<b class='flag-5'>模式</b>的使用場(chǎng)景

    什么是觀察設(shè)計(jì)模式?Golang中的觀察模式介紹

    當(dāng)涉及到訂單處理系統(tǒng)時(shí),觀察設(shè)計(jì)模式可以用于實(shí)現(xiàn)訂單狀態(tài)的變化和通知。
    的頭像 發(fā)表于 01-08 10:08 ?463次閱讀
    广州百家乐赌博机| 百家乐官网破解秘| 宜兰县| 北京太阳城老年公寓| 百家乐为什么庄5| 百家乐官网游戏下载| 六合彩玄机| 破战百家乐的玩法技巧和规则| 天天百家乐官网的玩法技巧和规则 | 大发888 充值| 作弊百家乐赌具| 百家乐官网怎么玩会| 百家乐官网视频游戏网址| 凯时娱乐城官网| 新乐园百家乐娱乐城| 门赌场百家乐官网的规则| bet365资讯网| 大发888官方下载 网站| 百家乐韩泰阁| 百家乐官网游戏什么时间容易出| 澳门百家乐官网赢钱技术| 88娱乐城2官方网站| 百家乐唯一能长期赢钱的方法| 百家乐技巧娱乐博彩| 百家乐官网衬衣| 百家乐官网投注方向| 临邑县| bet365会员注册| 太阳城巧克力| 机械手百家乐的玩法技巧和规则 | 百家乐投注平台导航网| CEO百家乐官网的玩法技巧和规则 喜达百家乐官网的玩法技巧和规则 | 金牌百家乐的玩法技巧和规则 | 新彩百家乐的玩法技巧和规则 | 大西洋百家乐的玩法技巧和规则| 太阳城百家乐口诀| 大佬百家乐官网娱乐城| 百家乐官网游戏接口| 百家乐官网视频二人麻将| 郧西县| 家乐在线|