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

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

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

    隨筆 - 117  文章 - 72  trackbacks - 0

    聲明:原創作品(標有[原]字樣)轉載時請注明出處,謝謝。

    常用鏈接

    常用設置
    常用軟件
    常用命令
     

    訂閱

    訂閱

    留言簿(7)

    隨筆分類(130)

    隨筆檔案(123)

    搜索

    •  

    積分與排名

    • 積分 - 155593
    • 排名 - 390

    最新評論

    [關鍵字]:java,design pattern,設計模式,《Java與模式》學習,Flyweight Pattern,享元模式
    [環境]:StarUML5.0 + JDK6
    [作者]:Winty (wintys@gmail.com) http://wintys.blogjava.net
    [正文]:

    一個單純享元的例子:咖啡攤(Coffee Stall)

    package pattern.flyweight.coffee.stall;

    import java.util.*;
    /**
     * 一個單純享元的例子
     * 咖啡攤:Coffee Stall
     * @version 2009-6-25
     * @author Winty(wintys@gmail.com)
     */
    public class CoffeeStallTest{
        public static void main(String[] args){
            FlavorFactory f = FlavorFactory.getInstance();
            
            Order o1,o2,o3;
            o1 =f.factory("Black Coffee");
            o2 = f.factory("Espresso");
            o3 = f.factory("Black Coffee");

            o1.serve();
            o2.serve();
            o3.serve();

            f.checkFlyweight();
        }
    }

    /**
     * 抽象享元角色
     */
    abstract class Order{
        public abstract void serve();
        public abstract String getFlavor();
    }

    /**
     * 具體享元角色
     */
    class Flavor extends Order{
        private String flavor;//內蘊狀態

        public Flavor(String flavor){
            this.flavor = flavor;
        }

        @Override
        public void serve(){
            System.out.println("serve " + flavor);
        }

        @Override
        public String getFlavor(){
            return flavor;
        }
    }


    /**
     * 享元工廠:使用單例模式實現
     */
    class FlavorFactory{
        private static FlavorFactory f = new FlavorFactory();
        private Map<String , Order> map;

        public FlavorFactory(){
            map = new HashMap<String , Order>();
        }

        public static FlavorFactory getInstance(){
            return f;
        }

        public Order factory(String flavor){
            Order order = null;
            if(map.containsKey(flavor)){
                order = map.get(flavor);
            }
            else{
                order = new Flavor(flavor);
                map.put(flavor , order);
            }

            return order;
        }


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


    運行結果:
    serve Black Coffee
    serve Espresso
    serve Black Coffee

    check flyweight:
    key:Black Coffee
    key:Espresso
    posted on 2009-06-29 23:02 天堂露珠 閱讀(349) 評論(0)  編輯  收藏 所屬分類: Pattern
    主站蜘蛛池模板: 最近最好的中文字幕2019免费| 国产精品久久永久免费| 国产三级免费观看| 九九精品国产亚洲AV日韩| 免费a级毛片无码a∨蜜芽试看| 亚洲人妖女同在线播放| 在线视频免费观看高清| 亚洲人精品亚洲人成在线| 免费被黄网站在观看| 国产成人精品亚洲| 亚洲av麻豆aⅴ无码电影 | 国产亚洲av片在线观看16女人 | 无套内谢孕妇毛片免费看看| 国产jizzjizz免费看jizz| 激情吃奶吻胸免费视频xxxx| 亚洲国产成人精品无码久久久久久综合| 老司机亚洲精品影院在线观看| 免费一级毛片在线播放不收费| 免费人成在线观看播放a| 亚洲午夜国产精品无码老牛影视| 中文字幕一区二区免费| 久久精品国产亚洲AV电影| 性做久久久久久免费观看| 黄色三级三级免费看| 亚洲精品无码mv在线观看网站| 青青草无码免费一二三区| 亚洲熟妇无码av另类vr影视 | 日韩高清免费在线观看| 国产免费久久精品99久久| 亚洲国产精品婷婷久久| 午夜无遮挡羞羞漫画免费| 国产特黄特色的大片观看免费视频| 亚洲国产精品一区二区久久| 最近中文字幕无吗免费高清| 免费人成再在线观看网站| 99久久亚洲综合精品成人网| 日韩免费高清视频网站| 成全在线观看免费观看大全| 77777午夜亚洲| 亚洲热妇无码AV在线播放| 好男人www免费高清视频在线|