• <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.js89g.vip | www.9971007.com | 55331nn.com | www.35155z.com | www.ylhg9898.com | 5539822.com | www.dz8789.com | ks3338.com | www.4996yn.com | qg292.com | www.2109r.com | www.h7788b.com | 6hcc44.com | www.rgcp111.com | 0207893.com | www.99001r.com | www.68666m.com | www.062866.com | www.088878.com | 781520.com | www.6939o.com | 90856m.com | www.282263.com | www.65579b.com | 1466x.com | www.xj778899.com | www.770444.com | 3685p.com | www.530016.com | 2142288.com | www.403552.com | www.3125008.com | 9694p.com | www.77801n.com | www.as0099.com | 88553885.com | www.8c333.com | 3379c.com | www.362477.com | www.dw982.com | 3559yyyy.com | www.188926.com | www.88166z.com | 2490r.com | www.444602.com | www.pj7608.com | blm655.com | www.860958.com | www.973777.com | 3566hh.com | www.44qxc.com | www.xpj8337.com | 9149g.com | www.50026z.com | www.58js88.com | 3y.com | www.3005w.com | www.348458.com | 33382bb.com | www.8fk.com | www.55526l.com | 84496633.com | www.50080o.com | www.9895g.com | www.1869o.com | 228888i.com | www.pj99z.com | www.0679555.com | dd2649.com | www.78949g.com | www.82hhh.com | blm877.com | www.657269.com | www.58118c.com | l277.com | 2844g.com | www.8s44.com | www.67843.com | 40033b.com | www.196095.com | www.00778q.com | www.wn68.com | 4630088.com | www.8839q.com | www.79500n.com | feicai0595.com | 55545b.com | www.ya2019c.com | www.hg123300.com | 55967q.com | jxdebon.cn | www.959595.com | www.xpj0978.com | 8884168.com | www.91233u.com | www.6888773.com | www.klcp000.com | 4288k.com | www.258015.com | www.7920v.com | www.amxhtd8.com | 15a14.net | pj333377.com | www.7777ae.com | www.50999p.com | 88535u.com | 1194111.com | www.338032.com | www.68365d.com | www.068123.com | 8547e.com | c89qe65.com | www.5854n.cc | www.3116d.com | www.ra5855.com | 3846uu.com | 866666c.com | www.36788l.com | www.27363s.com | www.040xpj.com | 5906mm.com | www.225065.com | www.hd8671.com | www.112111.com | 2546s.com | bt2088.com | www.375939.com | www.8084.com | www.yh67.net | www.hx3386.com | 500000472.com | 1168c.com | www.202901.com | www.550021l.com | www.11.sb | www.39695u.com | 80850oo.com | 8555886.com | www.djcp007.com | www.7777bj.com | www.bwinyz31.com | www.33455b.com | 3121j.com | 550111c.com | fff01234.com | www.403770.com | www.kj555888.com | www.89677q.com | www.40048.com | 2190w.com | 8016aa.com | 2546q.com | www.988068.com | www.980442.com | www.l32939.com | www.jiliyule.com | www.45601.com | 3662m.com | zxd2229.com | www.544141.com | www.81678n.com | www.88325j.com | www.345118.com | www.282xpj.com | 3301855.com | 7077a.com | 4018j.com | www.106235.com | www.df79.com | www.60108h.com | www.690510.com | www.dw982.com | www.yy918.com | 6641ss.com | weibo.com | 12125.company | w7454.com | 1483.com | www.126438.com | www.cp3136.com | www.21202v.com | www.40288d.com | www.c44zz.com | www.msc51.com | www.xpj6t6.com | www.jinsha49.com | mgm3242q.com | 3434zzz.com | 3566cc.com | 9149g.com | zxd914.com | 2419.com | www.99djcp.com | www.533551.com | www.slyl2.com | www.33112d.com | www.36587777.com | www.4923a.com | www.4102b.com | www.5hg6668.com | www.89677i.com | www.p3065.com | www.1122333.com | www.4455444.com | www.20161166.com | www.57799vv.com | www.88807x.com | www.617702.com | www.6372013.com | 500000516.com | df8ll.com | 54241111.com | 99567h.com | 56944.com | tyc99998.com | df8bet.com | 61325544.com | dwj6600.com | 983888q.com | f86811.com | 800089v.com | 1775a.com | 55323a.com | 3950k.com | 3406.com | tzvip2026.com | 9649i.com | 22dd8331.com | xldwh.com | biying900vip.com | 9149b.com | 2381pp.com | 3202u.com | 78113366.com | www.3888bet.com | www.vns0488.com | www.9068ss.com | www.77164.com | www.4972bb.com | www.0040i.com | www.04592004.com | www.xpj144.com | www.ag8820.com | www.lyhltj.com | www.5506488.com | www.4521.com | www.091628.com | www.pj56b.com | www.39500l.com | www.ya618.com | www.769971.com | www.330605.com | 97880022.net | qianyi49.com | 36989d.com | vns22.me | n2649.com | www.22266638.com | www.330099t.com | www.tyc658.com | www.998855f.com | www.848777t.com | www.jsdc9777.com | www.50080s.com | www.910355.com | www.768299.com | 664975.com | h4212.com | 67890ccc.com | feicai0457.com | www.76060u.com | www.4152f.com | www.bm246.com | www.16181p.com | www.7737dd.com | www.33598w.com | www.682918.com | www.00829n.com | yz6388.com | www.033033g.com | www.25288h.com | www.184kj.com | www.2544g9.com | www.xb88tt.com | www.27czj.com | www.178756.com | 56988g.com | 4488vv.com | 30019s.com | www.698012.com | www.138cpt.com | www.78680c.com | www.5522r.cc | c2490.com | j15cc.com | bet28z.com | www.514234.com | www.5303.com | www.063801p.com | www.54400c.com | www.560529.com | 7779q.cc | 1865.com | www.hg2218.com | www.jbb2017.com | www.780780c.com | www.2373j.com | www.81520a.com | 8159vvv.cc | feicai0899.com | www.6199155.com | www.50999.com | www.pujing75.com | www.212632.com | 1665m.com | swtyxxx.com | www.58777i.com | www.98698k.com | www.xinhuangguan.net | www.332052.com | 272c.net | 3644x.com | www.0561drf.com | www.55717q.com | www.629965.com | biying930vip.com | e35151.com | www.92msc.com | www.68365e.com | www.853053.com | 3559dddd.com | 168cp-u.com | www.987msc.com | www.0612j.com | www.715585.com | 50067k.com | 78118877.com | www.dd13558.com | www.692021.com | www.652912.com | 7508l.com | www.280zr.com | www.56655f.com | www.81233c.com | 33313w.com | js84.com | www.6664136.com | www.7240k.com | www.229075.com | 8159v.cc | www.330099v.com | www.xpj5.net | www.376387.com | 69446600.com | www.3459k.com | www.2021g.com | www.591411.com | vv00558.com | www.9374h.com | www.1559501.com | www.904830.com | bwinaaa.com | www.yinhecc77.com | www.006785.com | www.602852.com | 7w3777.com | www.q27229.com | www.42070014.com | www.083065.com | u3499.com | www.789025.com | www.77801f.com | 125588.com | bst979.com | www.28000t.com | www.929115.com | youfa560.com | www.fedxb.com | www.4833022.com | ude185.com | 59964mm.com | www.7415b.com | www.669278.com | 1443e.com | www.358298.com | www.43818x.com | hg28.com | www.25288s.com | www.33311.com | 32126o.net | www.js7288.com | www.40288o.com | www.34788u.com | 7439.com | www.hyi5.com | www.106076.com | g72227.com | www.4446ggg.com | www.364747.com | 888zrgw58ylc.com | www.88166v.com | www.506232.com | 99345dh.com | www.4972l.com | www.235925.com | 61329911.com | www.3032ee.com | 55yy8332.com | 28824e.com | www.1861222.com | jj1331.com | www.7435p.com | www.598282d.com | 27878jj.com | www.7025e.com | www.33997f.com | wfc.com | www.661990.com | www.974919.com | c3410.com | www.5b5b.com | ra9993.com | 32424z.com | www.707987.com | n7742.com | www.3339193.com | www.333xm.cc | 2146.com | www.3066bb.com | by306.com | www.yh1144.com | www.50080f.com | 4288t.com | www.9999d.com | www.73736a.com | www.js388999.com | www.3978u.com | 80188.com | www.bet365zh.com | www.68568v.com | www.wn0001.com | www.86267r.com | 32212g.com | www.11tyc.com | 7920.com | www.b3650.com | www.cz5658.com | fll8.in | www.78680v.com | t5429.com | www.hg8525.com | www.187512.com | www.xpj8888.cc | www.54400r.com | bb8159.cc | www.js8888888830.com | 6am.vip | www.28686.com | www.187397.com | www.333hwx.com | www.3416a.com | 3522hh.com | www.amjs449.com | 721023.com | www.5504k.com | zx3144.com | www.53516u.com | www.500770.com | www.546995.com | www.696by.com | 65005y.com | www.0601e.com | 566777.com | www.2607777.com | cr288.com | www.57800k.com | tt888y.com | www.140suncity.com | zx3144.com | www.948884.com | P35ii.com | www.0267x.com | www.346077.com | www.bet36365.com | www.673519.com | www.333hwx.com | www.863012.com | www.pj5906.com | www.966019.com | 5130.cc | www.cf9908.com | www.81866i.com | www.082wy.com | 35252.com | www.5095z.com | 8036ff.com | www.2934b.com | 9894.co | www.hx6691.com | www.pj27777.com | www.924177.com | www.38200c.com | www.632750.com | www.995y.net | www.178761.com | www.jqb9.com | 3151.com | www.938n.cc | L8520.com | www.89677r.com | vns8562.com | www.55676l.com | 87680h.com | www.86267y.com | 33115.com | www.hy6262.com | www.223456k.com | www.202341.com | www.yh6777.com | 8538e.com | www.4212q.com | 496ii.com | www.126a56.com | 20054499.com | www.99ttz.com | www.8124e.com | www.178339.com | www.336246.com | tzvip2023.com | www.063801p.com | 3807mm.com | www.29178b.com | www.jinsha300.com | www.178759.com | www.4888789.com | 0332v.com | www.38775pp.com | 655661199.com | www.535hc.com | www.bet9339.com | 033e.net | www.sscb11.cc | qqq40033.com | www.51331c.com | www.vns388.com | www.60108v.com | www.c44ii.com | 33337893.com | www.173383.com | 5509n.com | www.025727.com | www.5sj.com | 3750.com | www.669zf.com | www.776577.com | 7703gg.com | www.6509.com | 31894000.com | www.568380.com | www.088tyc.com | ccc67890.com | www.3416p.com | www.v15501.com | 9649.com | www.ylylc04.com | www.bobifa.net | jbb83.cc | www.1429h1.com | 61324477.com | www.424770.com | www.v72888.com | 3640a.com | www.5109.cc | www.hgyz88888.com | 8000524.com | www.9908.com | www.332905.com | 89777l.com | www.598282f.com | www.bet888365.com | 256777z.com | www.js89y.vip | 4812e.com | 65005z.com | www.9464005.com | 354018.com | 00774mm.com | www.2607777.com | 881381.com | 123456xx.cc | www.68365p.com | www.pj6633.com | 2324rrr.com | www.9996qq.com | www.hggj.ac | 441766.com | www.71399b.com | www.hg2808kk.com | 2234.so | www.978931.com | www.998855s.com | 3685q.com | www.191380.com | www.4196w.com | js88813.com | 7874.cc | www.a773776.com | www.8694c.com | 341qqq.com | www.927816.com | www.747855.com | 3122r.com | 00889193.com | www.7714k.com | www.mgm777l.com | b99345.am | www.683944.com | www.04567i.com | 5833yl.com | changlecai.com | www.50233.cc | www.99418.com | 769k.com | P35xx.com | www.3zq02.com | www.38987.com | 59964dd.com | www.178397.com | www.js2016.com | www.67797t.com | swtyrrr.com | www.610026.com | www.7893w34.com | www.554js.com | bycai8.com | www.849642.com | www.00778a.com | www.617703.com | 44hg.cc | www.396477.com | www.vns22.me | www.44112055.com | 88903636.com | 44pp8332.com | www.91233q.com | www.223349.com | 8290b.com | 19927.com | www.ck9393.com | www.00773j.com | www.8124n.com | 30177766.com | www.xinyc1.com | www.37377t.com | www.ym777.cc | 66876r.com | 342.com | www.775720.com | www.js58908.com | www.vip355.vip | bet28q.com | zhcpll.com | www.993621.com | www.792051.com | www.16297711.com | 76744.com | 228888s.com | www.775714.com | www.0072721.com | www.gf949888.com | sss8827.com | 5656hg.com | www.321953.com | www.665534.com | www.998855s.com | www.jd8866.com | 992222m.com | 27878nn.com | www.c141.vip | www.4102j.com | www.hg3255.com | 01365.com | 0289v.com | 28hg.net | www.hm5699.com | www.166490.com | www.033008.com | www.ylhg5858.com | 22113m.com | 364493.com | www.375781.com | www.77114r.com | www.0032737.com | www.hg0006.com | 2246sun.com | 3482r.com | kk3336.com | www.695756.com | www.182323.com | www.1118084.com | www.00hg444.com | 3187.com | so66666.cc | 3189o.com | www.569829.com | www.78949x.com | www.513950.com | www.696568.com | www.mh3888.com | 56728h.com | 0615004.com | 3544p.com | www.622703.com | www.81678q.com | www.88325l.com | www.44466666.com | www.00618n.com | 588ttt.cc | 8590os.com | 9420h.com | uc01.cc | www.665039.com | www.50024b.com | www.78680n.com | www.c7206.com | www.184998.com | www.v16677.com | y2306.com | 32555a.com | 8381j.com | 31414.com | www.91233i.com | www.898953.com | www.60007f.com | www.0099psb.com | www.1064a.com | www.ld003.com | www.js520123.com | www.hg9952.com | 048967.com | ccc01234.com | 8569811a.com | 2021j.com | 22995156.com | www.51515t.com | www.633813.com | www.6tdc.com | www.53900p.com | www.37377s.com | www.xpj9.net | www.b35cc.com | www.79500s.com | www.07811.com | www.hg8561.com | www.34349193.com | www.jz977.com | 2546v.com | 55331dd.com | 8883805.com | 4018l.com | s58955.com | 20054455.com | l3410.com | 7007570.com | zz8159.cc | ss5443.com | hgw89.com | www.717699.com | www.550304.com | www.901770.com | www.hw6689.com | www.5441t.com | www.99340.cc | www.50064t.com | www.83993f.com | www.vn888678.cc | www.bjl917.com | www.2299nsb.com | www.30350y.com | www.1754g.com | www.4196p.com | www.00778l.com | www.99mgm777.com | www.bwinyz27.com | www.4996gl.com | www.4058kk.com | www.h1432.com | www.91779f.com | www.5517bbb.com | www.6687q.com | www.v2894.com | www.6687b.com | www.33678yy.com | www.32031r.com | www.52062f.com | www.62778811.com | www.aa15.cc | www.3978n.com | www.88266f.com | www.71399g.com | www.26299r.com | www.5854v.cc | www.cai004.vip | www.737249.com | www.558424.com | www.338996.com | www.41518c.com | 45637w.com | 3644j.com | 131o.net | shen3322.com | hg11765.com | hg123311.com | zhcp09.com | www.c67783.com | www.v3301.com | www.902505.com | www.7736.com | www.jxcp4444.com | www.24199.com | www.0622.com | www.9286777.com | www.29277m.com | www.fcyl3.com | www.618477.com | www.80075i.com | xinli18sport.com | 88850dd.com | blr135.com | 6118w.com | 7792q.com | www.vns82222.com | www.9hg0066.com | www.114654.com | www.3157b.com | www.621233.com | www.7714n.com | www.76gcw.com | www.566897.com | 4182w.com | feicai0510.com | 5622a.com | 552325.com | 90307v.com | www.29886t.com | www.2380e.com | www.hg8ww.com | www.4809m.com | www.15355c.com | www.782478.com | 78119988.com | vip66657.com | vv1915.com | 79964l.com | www.2222k0.com | www.9404077.com | www.33678ii.com | www.334777.com | www.865807.com | 1813u.com | c91234567.com | vip80188.com | www.6033g.com | www.97780099.net | www.38345n.com | www.48330x.com | www.fh1188.com | www.41518u.com | 550111t.com | 01885e.com | www.63877y.com | www.718888.com | www.ddd2848.com | www.9356x.com | www.629293.com | 13868686.com | 8037xxx.com | 6600mmmm | www.4901a.com | www.06387733.com | www.37437.cc | www.106295.com | 99009193.com | 365vip300.cc | www.4972jj.com | www.600w.com | www.3a435.com | www.635893.com | 3950f.com | 159666147.com | www.ag4898.com | www.lfcp567.com | www.886498.com | www.672566.com | 1hao999.vip | jj38648.cc | www.ag.dl39709.com | www.314996.com | www.139975.com | www.343552.com | yun889.com | 1077fff.com | www.3388ok.com | www.69567o.com | www.978931.com | 3245x.com | ddcp66.com | www.25288n.com | www.js79903.com | www.ya002.com | ahga030.com | 08159h.com | www.98am444.com | www.6687d.com | www.937150.com | 1654nn.com | yhw1.cc | www.39678.com | www.913393.com | www.232775.com | 7893w38.com | www.hwx88.com | www.8850w1.com | www.5522l.cc | yd12302.cc | zuiyi118.com | www.79138.com | www.923700.com | www.178726.com | 11005t.com | www.5557888.com | www.0096ff.com | www.869576.com | l82365.com | www.888xin2.com | www.28000l.com | www.20czj.com | 80368kk.com | 658606.com | www.cp9518.com | www.022c.cc | mf704.com | 666-5.com | www.8313q.com | www.axc5.com | 916.com | www.0967111.com | www.4078b.com | www.881805.com | 6487www.com | www.bg999333.com | www.8645006.com | www.578860.com | 1813h.com | www.88837c.com | www.q94600.com | www.047788.com | 55331pp.com | www.911955.com | www.50052t.com | 17702.com | 3mgmsss.com | www.00778b.com | www.506972.com | 7599nn.com | www.yh44777.com | www.pj56899.com | 28288nn.com | 9895f.com | www.16181c.com | www.681090.com | hjcp222.com | www.071093.com | www.16188a.com | 1591sss.com | www.wn68.com | www.9464.com | df8t.com | 2418p.com | www.829797g.com | www.399049.com | 7555e.com | www.2302312.com | www.269777a.com | 2172288.com | www.xpj2108.com | www.50052k.com | hj4566com | www.hgbet22.com | www.4323z.com | 0612h.com | www.4107w.com | www.957004.com | mt0088.com | www.85770f.com | www.97828j.vip | dfs12345.com | www.xpj3333.cc | www.99094l.com | j5429.com | www.xpj1177.cc | www.99094f.com | hhvip65.com | www.yinhe9507a.com | www.ykylc09.com | 32126n.net | www.sb5202.com | www.60108k.com | w9629.com | www.443344.com | www.331616a.com | 4036111.com | www.56655i.com | www.506792.com | 2381004.com | www.4196o.com | 3844u.com | www.am88800.com | www.710502.com | 6002e.com | www.5849.com | www.811203.com | 22299qq.com | www.829797a.com | 55ww8332.com | www.20088hg.com | www.130057.com | 8855670.com | www.5675858.com | www.912482.com | 2146j.com | www.9895z.com | 3559sss.com | www.66930000.com | www.yi328.com | 26668g.com | www.t69096.com | 33567e.com | www.777444b.com | www.2350d.com | 2078.com | www.h1432.com | 83086o.com | www.zr244.com | www.937150.com | 2709a.com | www.m63568.com | 5456p.com | www.201081.com | www.235953.com | www.sjg900.com | www.73736d.com | 4590m.com | www.3066zz.com | 37570v.com | www.msc269.com | www.620977.com | 6830ff.com | www.939781.com | 33382bb.com | www.pj88v.com | 228888n.com | www.c8888.net | www.394577.com | www.8851i.com | www.9155e.cc | qq365v.com | www.68365q.com | js58222.com | www.88166p.com | 5443cc.com | www.822834.com | www.178379.com | www.boma0157.com | www.hw8877.com | 85558.com | www.84499j.com | 8547jj.com | www.55717e.com | 4288f.com |