<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 117  文章 - 72  trackbacks - 0

    聲明:原創(chuàng)作品(標(biāo)有[原]字樣)轉(zhuǎn)載時請注明出處,謝謝。

    常用鏈接

    常用設(shè)置
    常用軟件
    常用命令
     

    訂閱

    訂閱

    留言簿(7)

    隨筆分類(130)

    隨筆檔案(123)

    搜索

    •  

    積分與排名

    • 積分 - 155669
    • 排名 - 391

    最新評論

    [關(guān)鍵字]:java,design pattern,設(shè)計(jì)模式,《Java與模式》學(xué)習(xí),Flyweight Pattern,享元模式
    [環(huán)境]:StarUML5.0 + JDK6
    [作者]:Winty (wintys@gmail.com) http://wintys.blogjava.net
    [正文]:

    享元模式-單純享元:


    package pattern.flyweight.simple;

    import java.util.*;

    /**
     * 單純的享元
     * @version 2009-6-25
     * @author Winty(wintys@gmail.com)
     */
    public class SimpleFlyweightTest{
        public static void main(String[] args){
            FlyweightFactory f = new FlyweightFactory();

            Flyweight a = f.factory(new Character('a'));
            a.operation("ex");

            Flyweight b = f.factory(new Character('b'));
            b.operation("ex");

            Flyweight c = f.factory(new Character('a'));
            c.operation("ex");

            f.checkFlyweight();
        }
    }

    /**
     * 抽象享元
     */
    abstract class Flyweight{
        public abstract void operation(String extrinsicState);
    }

    /**
     * 具體享元
     */
    class ConcreteFlyweight extends Flyweight{
        private Character intrinsicState;

        public ConcreteFlyweight(Character intrinsicState){
            this.intrinsicState = intrinsicState;
        }

        /**
         * 外蘊(yùn)狀態(tài)改變方法行為,但不會改變內(nèi)蘊(yùn)狀態(tài)
         */
        @Override
        public void operation(String extrinsicState){
            String str = "intrinsic:" + intrinsicState;
            str += "   extrinsic:" + extrinsicState;
            System.out.println(str);
        }
    }

    /**
     * 享元工廠
     */
    class FlyweightFactory{
        private Map<Character , Flyweight> map;

        public FlyweightFactory(){
            map = new HashMap<Character , Flyweight>();
        }

        public Flyweight factory(Character state){
            Flyweight flyweight = null;

            if(map.containsKey(state)){
                flyweight = map.get(state);
            }
            else{
                flyweight = new ConcreteFlyweight(state);
                map.put(state , flyweight);
            }

            return flyweight;
        }

        /**
         * 輔助方法
         */
        public void checkFlyweight(){
            Iterator<Map.Entry<Character , Flyweight>> it
                = map.entrySet().iterator();
            System.out.println("check flyweight:");
            while(it.hasNext()){
                Map.Entry<Character , Flyweight> entry = it.next();
                Character key = entry.getKey();
                System.out.println("key:" + key);
            }
        }
    }

    運(yùn)行結(jié)果:
    intrinsic:a   extrinsic:ex
    intrinsic:b   extrinsic:ex
    intrinsic:a   extrinsic:ex
    check flyweight:
    key:b
    key:a
    posted on 2009-06-29 22:52 天堂露珠 閱讀(966) 評論(0)  編輯  收藏 所屬分類: Pattern
    主站蜘蛛池模板: 成人免费午夜视频| 免费福利视频导航| 久久午夜免费鲁丝片| 久久午夜羞羞影院免费观看| 99免费在线观看视频| 91在线视频免费91| 又粗又硬又大又爽免费视频播放| 亚洲国产精品丝袜在线观看| 亚洲成A人片在线观看无码不卡 | 久久亚洲中文字幕精品有坂深雪 | 女人18毛片特级一级免费视频| 亚洲国产成人久久综合区| 亚洲国产精品一区二区久久hs | 亚洲av午夜精品无码专区| 国产精品亚洲AV三区| 国产一级一毛免费黄片| 18成禁人视频免费网站| 在线日韩av永久免费观看| 亚洲人精品午夜射精日韩| 亚洲国产夜色在线观看| 免费国产va视频永久在线观看| 免费成人在线视频观看| 成人免费一区二区三区在线观看| 久久精品亚洲男人的天堂| 亚洲影视一区二区| 免费又黄又爽又猛大片午夜| 免费女人高潮流视频在线观看| 青青青青青青久久久免费观看| 久久精品7亚洲午夜a| 亚洲熟妇AV一区二区三区浪潮| 中国极品美軳免费观看| 香蕉97超级碰碰碰免费公| 亚洲午夜精品一级在线播放放| 91久久亚洲国产成人精品性色| 国产成人久久精品亚洲小说| 99热免费在线观看| 亚洲第一页日韩专区| 亚洲国产福利精品一区二区| 久久WWW免费人成—看片| 毛片a级三毛片免费播放| 亚洲成在人线av|