• <menu id="gyiem"><menu id="gyiem"></menu></menu>
  • <menu id="gyiem"><code id="gyiem"></code></menu>

    Java設計模式(十二) 策略模式

    原創文章,轉載請務必將下面這段話置于文章開頭處(保留超鏈接)。
    本文轉發自技術世界原文鏈接 http://www.luozeyang.com/design_pattern/strategy/

    策略模式介紹

    策略模式定義

    策略模式(Strategy Pattern),將各種算法封裝到具體的類中,作為一個抽象策略類的子類,使得它們可以互換。客戶端可以自行決定使用哪種算法。

    策略模式類圖

    策略模式類圖如下
    Strategy Pattern Class Diagram

    策略模式角色劃分

    • Strategy 策略接口或者(抽象策略類),定義策略執行接口
    • ConcreteStrategy 具體策略類
    • Context 上下文類,持有具體策略類的實例,并負責調用相關的算法

    策略模式實例解析

    本文代碼可從作者Github下載

    典型策略模式實現

    策略接口,定義策略執行接口

    1
    2
    3
    4
    5
    6
    7
    package com.jasongj.strategy;

    public interface Strategy {

    void strategy(String input);

    }

    具體策略類,實現策略接口,提供具體算法

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    package com.jasongj.strategy;

    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;

    @com.jasongj.annotation.Strategy(name="StrategyA")
    public class ConcreteStrategyA implements Strategy {

    private static final Logger LOG = LoggerFactory.getLogger(ConcreteStrategyB.class);

    @Override
    public void strategy(String input) {
    LOG.info("Strategy A for input : {}", input);
    }

    }

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    package com.jasongj.strategy;

    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;

    @com.jasongj.annotation.Strategy(name="StrategyB")
    public class ConcreteStrategyB implements Strategy {

    private static final Logger LOG = LoggerFactory.getLogger(ConcreteStrategyB.class);

    @Override
    public void strategy(String input) {
    LOG.info("Strategy B for input : {}", input);
    }

    }

    Context類,持有具體策略類的實例,負責調用具體算法

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    package com.jasongj.context;

    import com.jasongj.strategy.Strategy;

    public class SimpleContext {

    private Strategy strategy;

    public SimpleContext(Strategy strategy) {
    this.strategy = strategy;
    }

    public void action(String input) {
    strategy.strategy(input);
    }

    }

    客戶端可以實例化具體策略類,并傳給Context類,通過Context統一調用具體算法

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    package com.jasongj.client;

    import com.jasongj.context.SimpleContext;
    import com.jasongj.strategy.ConcreteStrategyA;
    import com.jasongj.strategy.Strategy;

    public class SimpleClient {

    public static void main(String[] args) {
    Strategy strategy = new ConcreteStrategyA();
    SimpleContext context = new SimpleContext(strategy);
    context.action("Hellow, world");
    }

    }

    使用Annotation和簡單工廠模式增強策略模式

    上面的實現中,客戶端需要顯示決定具體使用何種策略,并且一旦需要換用其它策略,需要修改客戶端的代碼。解決這個問題,一個比較好的方式是使用簡單工廠,使得客戶端都不需要知道策略類的實例化過程,甚至都不需要具體哪種策略被使用。

    如《Java設計模式(一) 簡單工廠模式不簡單》所述,簡單工廠的實現方式比較多,可以結合《Java系列(一)Annotation(注解)》中介紹的Annotation方法。

    使用Annotation和簡單工廠模式的Context類如下

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    package com.jasongj.context;

    import java.util.Collections;
    import java.util.Map;
    import java.util.Set;
    import java.util.concurrent.ConcurrentHashMap;

    import org.apache.commons.configuration.ConfigurationException;
    import org.apache.commons.configuration.XMLConfiguration;
    import org.reflections.Reflections;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;

    import com.jasongj.strategy.Strategy;

    public class SimpleFactoryContext {

    private static final Logger LOG = LoggerFactory.getLogger(SimpleFactoryContext.class);
    private static Map<String, Class> allStrategies;

    static {
    Reflections reflections = new Reflections("com.jasongj.strategy");
    Set<Class<?>> annotatedClasses =
    reflections.getTypesAnnotatedWith(com.jasongj.annotation.Strategy.class);
    allStrategies = new ConcurrentHashMap<String, Class>();
    for (Class<?> classObject : annotatedClasses) {
    com.jasongj.annotation.Strategy strategy = (com.jasongj.annotation.Strategy) classObject
    .getAnnotation(com.jasongj.annotation.Strategy.class);
    allStrategies.put(strategy.name(), classObject);
    }
    allStrategies = Collections.unmodifiableMap(allStrategies);
    }

    private Strategy strategy;

    public SimpleFactoryContext() {
    String name = null;
    try {
    XMLConfiguration config = new XMLConfiguration("strategy.xml");
    name = config.getString("strategy.name");
    LOG.info("strategy name is {}", name);
    } catch (ConfigurationException ex) {
    LOG.error("Parsing xml configuration file failed", ex);
    }

    if (allStrategies.containsKey(name)) {
    LOG.info("Created strategy name is {}", name);
    try {
    strategy = (Strategy) allStrategies.get(name).newInstance();
    } catch (InstantiationException | IllegalAccessException ex) {
    LOG.error("Instantiate Strategy failed", ex);
    }
    } else {
    LOG.error("Specified Strategy name {} does not exist", name);
    }

    }

    public void action(String input) {
    strategy.strategy(input);
    }

    }

    從上面的實現可以看出,雖然并沒有單獨創建一個簡單工廠類,但它已經融入了簡單工廠模式的設計思想和實現方法。

    客戶端調用方式如下

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    package com.jasongj.client;

    import com.jasongj.context.SimpleFactoryContext;

    public class SimpleFactoryClient {

    public static void main(String[] args) {
    SimpleFactoryContext context = new SimpleFactoryContext();
    context.action("Hellow, world");
    }

    }

    從上面代碼可以看出,引入簡單工廠模式后,客戶端不再需要直接實例化具體的策略類,也不需要判斷應該使用何種策略,可以方便應對策略的切換。

    策略模式分析

    策略模式優點

    • 策略模式提供了對“開閉原則”的完美支持,用戶可以在不修改原有系統的基礎上選擇算法(策略),并且可以靈活地增加新的算法(策略)。
    • 策略模式通過Context類提供了管理具體策略類(算法族)的辦法。
    • 結合簡單工廠模式和Annotation,策略模式可以方便的在不修改客戶端代碼的前提下切換算法(策略)。

    策略模式缺點

    • 傳統的策略模式實現方式中,客戶端必須知道所有的具體策略類,并須自行顯示決定使用哪一個策略類。但通過本文介紹的通過和Annotation和簡單工廠模式結合,可以有效避免該問題
    • 如果使用不當,策略模式可能創建很多具體策略類的實例,但可以通過使用上文《Java設計模式(十一) 享元模式》介紹的享元模式有效減少對象的數量。

    策略模式已(未)遵循的OOP原則

    已遵循的OOP原則

    • 依賴倒置原則
    • 迪米特法則
    • 里氏替換原則
    • 接口隔離原則
    • 單一職責原則
    • 開閉原則

    未遵循的OOP原則

    • NA

    Java設計模式系列

    郭俊 Jason wechat
    歡迎關注作者微信公眾號【大數據架構】
    您的贊賞將支持作者繼續原創分享
    速赢彩app www.757zf.com | www.8999ka.com | www.6kk.com | www.36166i.com | www.twcp.com | 009.so | www.08gcw.com | www.hg0728.com | 5802cc.com | www.55717.com | 7375.com | 4833011.com | www.115527k.com | 2127ff.com | www.c4528.com | www.732156.com | 0289v.com | www.5441d.com | www.582666.com | 838388c.com | www.23636g.com | www.92220358.com | jj4255.com | www.c134.vip | www.4496877.com | 11kk8331.com | pj334433.com | www.win1238.com | www.vns7898.com | 7811b.com | www.3950.com | www.long-8.com | 3534n.com | www.887763.com | www.5049v.com | 9694z.com | 23800l.com | www.zzyl64.com | www.48163.com | 3176688.com | www.055m.cc | www.pj6668.com | 99589q.net | www.267051.com | www.469700.com | 4495.com | 5456x.com | www.22csj.com | www.hg773.com | l7742.com | sxlwl.net | www.48330m.com | www.bj9093.com | v444000.com | www.hm5522.com | www.69111k.com | 3656ss.com | www.9971002.com | y45638.com | www.232651.com | www.85857z.com | 455yh.com | www.276608.com | www.955244.com | gbhs999.com | 4694.com | www.417714.com | www.h70717.com | 9646d.com | www.989841.com | www.56655u.com | 45637z.com | kxchihuo.com | www.588vip.xyz | www.520195.com | ww222hg.com | www.557089.com | www.7415e.com | 7pj.me | sb5508.com | www.390292.com | 2776dh.com | www.338996.com | www.hjdc2007.com | zhcp57.com | 2223805.com | www.2875q.com | www.jsc222.com | 3121oo.com | ule607.com | www.7782s.com | www.85857f.com | 033n.net | 4747.com | www.230635.com | www.423bbb.com | www.pj7185.com | 4152r.com | www.243500.com | www.9187.com | www.67894.com | i2490.com | zzwl1.com | www.87668z.com | www.sb60001.com | 4018k.com | www.qm72.com | www.56011a.com | www.hg130.com | youfa55.vip | 88775002.com | www.c132.vip | www.56011p.com | www.xb0021.com | 7508d.com | 5168b.com | www.w408.com | www.68365w.com | www.8k365.com | a72227.com | hgyz22.com | www.848166.com | www.pj55715.com | www.60168b.com | 9649011.com | www.866505.com | www.4521a.com | www.yl66636.com | 62222z.com | 998c.cc | www.602467.com | www.3350.vip | www.zzyl68.com | www.8885888.com | 11ww8332.com | 5651x.com | www.535666e.com | www.dalubet365.com | www.25468.com | www.4107m.com | 55331b.com | mmm5144.com | www.215602.com | www.50026m.com | www.mgm868003.com | www.48696.com | 3844r.com | 11989v.com | www.clh1.com | www.jzvip22.com | www.dfh261.com | www.hg2168.com | 55331z.com | 93936i.com | 7792g.com | www.638173.com | www.b387387.com | www.bwinyz39.com | www.80834.com | www.sjcp111.com | feicai0555.com | 4546.com | vns365c.com | www.288346.com | www.977hf.com | www.68365a.com | www.rcw058.com | www.2090955.com | 500000838.com | 3568o.com | 3y999.com | 131365.com | www.975627.com | www.98528f.com | www.xpj8.net | www.b35hh.com | www.052vns.com | www.87680o.com | 22556m.com | 8522wwww.com | rrr40033.com | 30175544.com | 20833d.com | www.196103.com | www.6832x.com | www.00773l.com | www.01389.com | www.hg9876.com | feicai0899.com | sss40033.com | yabo6007.com | 0015aa.com | 3405j.com | yabo6000.com | 667766z.com | 4195g.com | www.377501.com | www.cp703.vip | www.58181.cc | www.50788b.com | www.81608m.com | www.3032aa.com | www.10999c.com | www.20199kk.com | www.hg6888.com | 3222v.cc | xx5443.com | 8569811u.com | 0080x.com | sbobet.com | 8956789.com | hx6888.com | 22098.com | jjj67890.com | 3566xx.com | 9646y.com | 65561122.com | 7681003.com | 0860d.com | c388u.com | cp088r.com | www.202340.com | www.373500.com | www.1368e.cc | www.901381.com | www.912183.com | www.938518.com | www.916270.com | www.904861.com | www.915776.com | www.936150.com | www.954688.com | www.ct8844.com | www.818897.com | www.688824.com | www.610026.com | www.609719.com | www.401276.com | www.309388.com | www.508433.com | www.ya989.com | www.ck3578.com | www.895853.com | www.602630.com | www.355911.com | www.87668o.com | zhcpss.com | 1669i.com | 1483b.com | 039da.com | 3890f.com | 33318g.com | 55899m.com | www.81866j.com | www.pjzhejiang.com | www.900692.com | www.505msc.com | www.xpj99897.com | www.20199qq.com | www.c69096.com | www.5446v.com | www.hg27288.com | www.9149h.com | www.949498.com | www.338995.com | 89439922.com | 77775309.com | wnsr8822.com | www.kfa6.com | www.b21365.com | www.jx5544.com | www.3066kk.com | www.91779k.com | www.4196z.com | www.xh389.com | www.6939p.com | www.022n.cc | www.598411.com | 8381k.com | 44077s.com | 3676vip.com | 253504.com | www.67797x.com | www.ks8884.com | www.89677v.com | www.68993227.com | www.855085.com | 89892qq.com | 3473z.com | 026237.com | 6175o.com | 78808a.com | www.115669.com | 7744ooo.com | 38821199.com | 77606q.com | 11989.com | www.9679d.com | www.rgcp444.com | www.707727.com | www.098wy.com | www.71233u.com | 1294c.com | 8547x.com | www.liuhediguo.com | www.157234.com | www.ba509.com | www.2934g.com | www.917052.com | www.389744.com | 4116v.com | 888jxf.com | www.pj7889.com | www.751cp5.com | www.6768997.com | www.hm6655.com | e2649.com | 3405sss.com | pjbet444.com | www.bai3344.com | www.r98478.com | www.901307.com | 8030x.com | 3fll8.com | 26444z.com | www.glc66.com | www.015kj.com | www.4102p.com | www.976115.com | 3552i.com | 9649011.com | www.k22365.com | www.16181c.com | www.35885.cc | 8988h.com | 11ww8332.com | www.004716.com | www.63606f.com | www.c9668.com | bet3650759.com | iii0022.com | 51335f.com | www.9068mm.com | www.huangma23.com | www.qml7.com | 73567tg1.com | 4638899.com | www.mhcp2.com | www.89929.cc | 0136365.com | zhcpdd.com | www.www-79489.com | www.321.ceo | www.257015.com | 5589p.com | 838388x.com | www.482633.com | www.880478.com | www.276608.com | 23599l.com | www.8694l.com | www.9422f.com | www.06820e.com | www.901375.com | 6944009.com | 08159c.com | www.99399c.com | www.48330k.com | www.106267.com | 3482x.com | www.452815.com | 69448822.com | 884167.com | x86002.com | www.xpj539.com | www.7714w.com | www.068671.com | bet599.com | www.76775a.com | www.8839g.com | 85698t.com | www.js31567.com | www.sha0055.com | www.783306.com | 80850h.com | www.3643t.com | www.493337.com | www.602452.com | 168c5.com | 1775ee.com | www.hg8kk.com | www.572102.com | 3550t.com | www.911898.com | www.5522y.cc | 9737008.com | www.096968.com | www.js68111.com | www.398846.com | 8037t.com | www.hg1266.com | www.966026.com | 8159ee.cc | www.hg5779.com | www.1117758.com | 29918uu.com | 256777b.com | www.mp506070.com | www.949410.com | 4488bbb.com | www.980999.com | www.fo62.com | 30688s.com | www.js2555.com | www.c141.vip | 61325544.com | www.00773g.com | www.044592.com | 2267o.com | www.163a5.com | www.3479h.com | 38244s.com | www.80834.com | www.609716.com | 7605q.com | www.38138r.com | 365wang.com | www.am22222.com | www.js18685.com | 52688s.com | www.15011k.com | www.cp3.xyz | feicai0431.com | www.16297777.com | www.676711.com | 5446ww.com | www.s27229.com | www.7793s.com | 7240g.com | www.9b003.com | cr789.co | www.998msc.com | www.qianyi862.com | www.js7888.co | www.350558.com | www.903588.com | 30688a.com | www.755.so | hj5068.com:8888 | www.pj0088.com | www.68568m.com | 9506c.com | www.00772t.com | 81511a.com | www.81849l.com | www.898364.com | 876023.com | www.377666v.com | 998x.cc | 1077pp.com | www.hg6833.com | 1592i.com | www.w32939.com | www.652776.com | 2443b.com | www.98478.com | 7240r.com | www.5981h.com | 123818.xxx | www.vns7000.cc | www.5555y.cc | 4023q.com | 2255buyu.com | www.91779n.com | 8036x.com | www.yh269831.com | 009900.cc | www.hg7684.com | www.197092.com | www.309999.com | www.927836.com | 44436588.com | www.3890b.com | 23233h.com | www.bet91487.com | 28758.com | www.339788.com | www.588088.com | 72227.com | www.36582222.com | 7276886.com | www.7249z.com | 4255a.com | www.4156.com | 8590.vip | www.8081.am | 66671i.com | www.1434p.com | 5657.com | www.115527l.com | 3m412.com | www.314455.com | sxlwl.net | www.hg8445.com | www.34788o.com | www.b2229b.com | www.34788u.com | www.g24074.com | wzdongbao.com | www.c15595.com | 4379.com | www.klcp009.com | 6766uu.com | www.686936.com | www.994948.com | www.am1666.com | www.640477.com | www.87680g.com | www.177741.com | www.4249.com | y6880.com | www.120529.com | a83377.com | www.yh234h.com | 5350t.com | www.bet779.com | 3807yy.com | www.89777z.com | 9694d.com | www.js36686.com | 2018685188.com | www.69465.com | www.86611b.com | www.570981.com | www.626022.com | 21866b.com | www.5555yh.vip | 80850r.com | www.5886nn.com | 9068v.com | www.9646w.com | 6868001.cc | www.652631.com | www.vv2649.com | 8901e.com | www.4196j.com | 4590b.com | www.07163h.com | www.4763333.vip | www.657666.com | www.4763228.com | www.43131m.com | www.dzcp4444.com | 4694t.com | www.12455i.com | www.pj57777.com | www.101129.com | www.2945b.com | 6118b.com | www.77114j.com | www.85770l.com | www.206991.com | www.505msc.com | www.178982.com | www.4853.com | 35222mm.com | www.1368m.cc | www.5601j.com | 0015jj.com | www.7140588.com | js456456.com | www.50054u.com | www.20199bb.com | nnn1915.com | www.7249n.com | 1669jt.com | www.022184.com | www.99113s.com | 9993450.com | www.cpkk7.com | www.33455b.com | 4880.com | www.66621l.com | www.ao699.com | www.982jc.com | www.026319.com | 10050535.com | www.80065m.com | www.3459j.com | 6396c.com | www.37377b.com | www.8494b.com | jxddcs.com | www.wns22.me | 309249.com | www.rrle4.com | www.350558.com | 666c96.com | www.hcjt1.com | www.767666.com | j67890.com | www.df76.com | www.1156oo.com | hg27388.com | www.617069.com | www.47711.com | 9411nnn.com | www.57800x.com | 64111j.com | 41178982.com | www.hr1555.com | www.yh8217.com | 9030i.com | www.41518w.com | www.yl222.com | 925150.com | www.35898d.com | www.39695i.com | rauuu.com | www.555hy.cc | www.28944.com | tzvip2026.com | www.099816.com | www.63606v.com | www.df4566.com | 20778855.com | www.ya2019o.com | www.006635.com | s2554.com | www.4323l.com | www.8366uu.com | 4955t.com | www.339219.com | www.115527b.com | www.am4411.com | 6487nnn.com | www.ykylc07.com | www.i22365.com | 1104dh.com | www.8839l.com | www.jjjj009.com | wfcp444333.com | 1331uu.com | www.83993n.com | www.442336.com | 2jsqqq.com | 2767h.com | www.960023.com | 4195c.com | 65005i.com | www.c7268.com | www.848777e.com | www.pj5907.com | 131tt.net | www.599830.com | www.73990k.com | www.4107h.com | 4880r.com | www.8887989.com | www.3534y.com | 3522jj.com | 3225g.com | www.918li.com | www.16181s.com | www.333222p.com | f666.org | www.101698.com | www.3775d.com | www.js00369.com | 0201bb.com | www.xinyc1.com | www.0194007.com | www.333010.com | 55899w.com | qqq3405.com | www.587944.com | www.5250666.com | 23800z.com | js6444.com | www.506291.com | www.48330l.com | www.44508.com | 5446hh.com | yxkj55.com | www.209875.com | www.3978b.com | www.sb5542.com | 88113885.com | df6272.com | www.hczx3.com | www.69567z.com | www.173msc.com | 2649w.com | 9694o.com | www.040426.com | www.yh68222.com | www.940999.com | www.518836.com | 6261s.com | 7893w07.com | www.536210.com | www.pjzxyl.com | www.1168c.com | www.333133e.com | 6594gg.com | 457209.com | www.ya2019w.com | www.4963j.com | www.330099h.com | hg2019.cc | bycai8.com | 9964p.com | www.022tj.cc | www.304902.com | www.68666f.com | 3435r.com | 1389o.com | www.377474.com | www.50080j.com | www.9895s.com | www.hg281.com | www.pjxianggang.com | 889.net | www.606285.com | www.5958199.com | www.28000t.com | www.0139.com | www.a3a999.cc | b99vip.com | 6261qq.com | 12562004.com | www.71399z.com | www.3066uu.com | www.090091.com | www.hg226.cm | 228888h.com | 2685.com | 500000436.com | www.068673.com | www.5854q.cc | www.953572.com | www.xycp98.net | www.kk377.com | www.s22365.com | 3005647.com | yf2555.com | 66300vip12.com | 2535.com | www.206882.com | www.c130.vip | www.89894x.com | www.4102e.com | www.8313w.com | www.hg7857.com | www.25288n.com | 237844.com | 3136ww.com | www.355243.com | www.c5908.com | www.77114j.com | www.3691p.com | www.yh83.net | www.cp0018.com | www.o8867.com | 44yy8332.com | 111000ii.com | 89777j.com | 866666r.com | www.jj0.net | www.906511.com | www.5854p.cc | www.4368.com | www.9187f.com | www.2021c.com | www.19yh1.com | www.pj6368.com | www.31567.ag | www.7111k.com | www.65533d.com | 2381yy.com | 61329944.com | ib738.com | xinvip6.com | 77606j.com | 9646l.com | js26311.com | 75878.com | 29522dd.com | 80878n.com | 50000997.com | x33v.vip | 0332.com | bet577b.com | www.66652o.com | www.235944.com | www.348177.com | www.503990.com | www.622989.com | www.645880.com | www.629053.com | www.799666a.com | www.ch8678.com | www.ch8977.com | www.985026.com | www.923733.com | www.893023.com | www.783500.com | www.al5888.com | www.978167.com | www.890702.com | www.737884.com | www.620557.com | www.550214.com | www.377615.com | www.578113.com | www.378015.com | www.178215.com | www.29277u.com | 2146n.com | 1483yy.com | 78116644.com | 4066bb.com | 505-jc.com | 4060xx.com | 9646c.com | 51133oo.com | 1031878.com | 33ff8331.com | 2506y.com | 5369a.com | www.6491d.com | www.88807a.com | www.9405511.com | www.56520g.com | 9694f.com | 3189vv.com | pj535.cc | www.213535.com | www.yh22338.com | www.895095.com | www.103111.com | www.365055.bet | www.9895d.com | www.1466g.com | www.50052q.com | www.ch8922.com | www.rcw456.com | www.116205.com | 5002r.com | 3405mm.com | 86611f.com | 123456kk.cc | hb10611.com | www.67797s.com | www.815333.com | www.caipiao33c.com | www.47506d.com | www.2418k.com | www.99788r.com | www.07679r.com | www.256818.com | www.03czj.com | www.303853.com | i99345.am | 28824z.com | 6118m.com | 00774tt.com | www.cr508.com | www.js44444.com | www.97222a.com | www.3116a.com | www.vn888123.cc | www.2875q.com | www.264499.com | zz5443.com | 6261m.com | hjdc2018.com | 2247ff.com | www.44msc.la | www.c668ln.com | www.3w28.com | www.0270j.com | www.708382.com | hgyz88.com | 0332y.com | zhcp52.com | www.pj7987.com | www.0333444.com | www.47506c.com | www.52072y.com | www.397477.com | 00778e.com | 8159m.cc | 5295uu.com | www.1113890.com | www.pj66119.com | www.bet353654.com | www.989447.com | 138761.com | 98345c.com | feicai0394.com | www.pj1314.com | www.0092737.com | www.99080088.com | www.995sj.com | 11qq8331.com | 0507.com | uu76669.com | www.vm905.com | www.3066bb.com | www.21202m.com | www.022190.com | 22299kk.com | b86226.com | pj00nn.com | www.75367.com | www.3066kk.com | www.7793p.com | 33zz8332.com | 4052g.com | 4461a.com | www.hg3388.tw | www.my95.net | www.55545w.com | www.775720.com | wnsr838.com | 7249u.com | www.4972qq.com | www.l32939.com | www.7714c.com | www.270648.com | 915310.com | 12742x.com | www.pj1985.com | www.hg77760.com | www.866309.com | 22284066.com | 44488h.com | www.713msc.com | www.38775yy.com | www.dfyk3.com | 4774b.com | fuhao123.com | www.80969u.com | www.wqdlcn.com | www.84499v.com | 4340g.com | www.yh6118.com | www.cp08.com | www.4368.com | www.257015.com | 2021f.com | 88665004.com | www.875599.com | www.2418l.com | www.49956i.com | 4288d.com | www.483828.com | www.10999w.com | www.cmc.cc | 22665144.com | www.77764400.com | www.56992.com | www.472706.com | www.dan03.com | 7744vn77.com | 218jc.com | www.hqr66.com | www.8998828.com | www.033708.com | 7799sj.com | www.pjbet444.com | www.x948x.com | www.3479x.com | 3467u.cc | mm99977.com | www.xpj63.com | www.07163i.com | 348960.com | 2019dd.cc | www.cj270.com | www.3066.com | 38821100.com | 5589j.com | www.xpj699699.com | www.86267x.com | 068.cc | 881133aa.com | www.811202.com | www.976527.com | 80567e.com | www.msc55.com | www.9822ae.com | www.271051.com | 4025m.com | www.53322888.com | www.37266.co | 022573.com | 2595a.com | www.hg8cc.com | www.csgc1.com | 5003ss.com | ddcp66.com | www.6805.com | www.796678.com | 86811g.com | www.5599365.com | www.7240f.com | 55155r.com | 3522rr.com | www.47709.net | www.394177.com | 11005p.com | www.3350.com | www.33997j.com | 3559pppp.com | www.7893w62.com | www.820032.com | 5003kk.com | www.306004.com | www.yh888a.com | www.607356.com | mc1888.com | www.939168.com | www.76520m.com | yy080com | www.wns08888.com | www.33997y.com | 4001.com | www.1495s6.com | www.07163y.com | 9479.com | www.a3a777.cc | www.5ecp.com | 9679y.com | www.tyc180.com | www.55czt.com | 566777j.com | www.jy758.com | www.732779.com | am99914.com | www.27363a.com | www.178167.com | 88119o.com | www.818515.com | www.cp8003.cc | 33668.com | www.567878.com | www.cp3158.cc | 1466o.com | www.x4042.com | www.3416r.com | 32666l.com | www.346788.com | www.763826.com | k353.com | www.h2894.com | www.77djcp.com | www.3888bet.com | www.73365r.cc | 4255ee.com | www.3569b.com | www.949430.com | 992222v.com | www.92518.com | jsok258.com | www.pj11588.com | www.6939t.com | 80892ii.com | www.hg6288.com | www.77803w.com | ww222hg.com | www.983098.com | 7605i.com | 2677xxx.com | www.871828.com | 9659o.com | www.yk222d.com | 365.sb | www.365815c.com |