<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)作品(標有[原]字樣)轉(zhuǎn)載時請注明出處,謝謝。

    常用鏈接

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

    訂閱

    訂閱

    留言簿(7)

    隨筆分類(130)

    隨筆檔案(123)

    搜索

    •  

    積分與排名

    • 積分 - 156629
    • 排名 - 390

    最新評論

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

    一個有外蘊狀態(tài)的單純享元例子:咖啡屋(Coffee Shop)

    package pattern.flyweight.coffee.shop;

    import java.util.*;
    /**
     * 一個有外蘊狀態(tài)的單純享元例子
     * 咖啡屋:Coffee Shop
     * @version 2009-6-25
     * @author Winty(wintys@gmail.com)
     */
    public class CoffeeShopTest{
        public static void main(String[] args){
            FlavorFactory f = FlavorFactory.getInstance();
            
            Table t1,t2;
            t1 = new Table(101);
            t2 = new Table(102);

            Order o1,o2,o3;
            o1 =f.factory("Black Coffee");
            o2 = f.factory("Espresso");
            o3 = f.factory("Black Coffee");

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

            f.checkFlyweight();
        }
    }

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

    /**
     * 具體享元角色
     */
    class Flavor extends Order{
        private String flavor;//內(nèi)蘊狀態(tài)

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

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

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


    /**
     * 享元工廠:使用單例模式實現(xiàn)
     */
    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);
            }
        }
    }

    /**
     * 外蘊狀態(tài)類
     */
    class Table{
        private int num;

        public Table(int num){
            setNum(num);
        }

        public int getNum(){
            return num;
        }

        public void setNum(int num){
            this.num = num;
        }
    }


    運行結(jié)果:
    serve Black Coffee to 101
    serve Espresso to 101
    serve Black Coffee to 102

    check flyweight:
    key:Black Coffee
    key:Espresso
    posted on 2009-06-29 23:08 天堂露珠 閱讀(318) 評論(0)  編輯  收藏 所屬分類: Pattern
    主站蜘蛛池模板: 国产亚洲人成A在线V网站| 国产亚洲成av片在线观看 | 男人天堂免费视频| 91在线视频免费播放| 亚洲精品无码Av人在线观看国产| 美女被免费网站视频在线| 99re6热视频精品免费观看| 免费大黄网站在线观| 亚洲精品一卡2卡3卡三卡四卡| 免费人成视频在线观看免费| 99久久99久久精品免费看蜜桃| 亚洲日韩精品无码一区二区三区| 亚洲一区二区三区在线观看网站 | 亚洲人成网址在线观看| 国产精品无码亚洲精品2021| 小日子的在线观看免费| 免费v片视频在线观看视频| 污网站在线免费观看| 国产专区一va亚洲v天堂| 4444亚洲国产成人精品| 成人国产精品免费视频| 色吊丝最新永久免费观看网站 | 亚洲精品视频在线观看你懂的| 亚洲va乱码一区二区三区| 久久精品国产免费| 亚洲中文久久精品无码ww16| 在线观看肉片AV网站免费| 久久久青草青青国产亚洲免观| 你好老叔电影观看免费| 亚洲日本在线免费观看| 午夜免费福利小电影| 亚洲AV无码专区在线亚| 国产91在线免费| 亚洲AV无码一区二区乱子仑| 国内自产拍自a免费毛片| 亚洲粉嫩美白在线| 成人免费一区二区无码视频| 亚洲成年人免费网站| 国产hs免费高清在线观看| 国产午夜精品免费一区二区三区 | 亚洲日本一区二区三区|