26.享元模式

需求

小型的外包項目拍皮,給客戶A做一個產品展示網站签餐,客戶A的朋友感覺效果不錯,也希望做這樣的產品展示網站菱鸥,但是要求都有些不同:
1)有客戶要求以新聞的形式發(fā)布
2)有客戶人要求以博客的形式發(fā)布
3)有客戶希望以微信公眾號的形式發(fā)布

UML

享元模式UML

類結構

享元抽象類: 定義享元對象 和 主要功能

享元實現類: 實現抽象功能

Web工廠類: 單例生產共享部分

User類: 用戶【本案例中沒什么用 就是非用用部分】

測試類: 調用方法 測試功能

代碼實現

測試類

package com.yuan.dp.flyweighty;

public class FlyweihtyTest {
    public static void main(String[] args) {
        Web工廠類 webFactory = new Web工廠類();
        享元實現類 fly_1 = webFactory.getFlyweihty("微博",new User("小明1"));
        享元實現類 fly_4 = webFactory.getFlyweihty("微博",new User("小明2"));
        享元實現類 fly_2 = webFactory.getFlyweihty("網頁",new User("小紅1"));
        享元實現類 fly_5 = webFactory.getFlyweihty("網頁",new User("小紅2"));
        享元實現類 fly_3 = webFactory.getFlyweihty("視頻",new User("小賀1"));
        享元實現類 fly_6 = webFactory.getFlyweihty("視頻",new User("小賀2"));

        fly_1.use();
        fly_2.use();
        fly_3.use();
        fly_4.use();
        fly_5.use();
        fly_6.use();
        webFactory.getSize();
    }
}

/*
新聞類型是......微博       用戶類型是....小明1
新聞類型是......網頁       用戶類型是....小紅1
新聞類型是......視頻       用戶類型是....小賀1
新聞類型是......微博       用戶類型是....小明1
新聞類型是......網頁       用戶類型是....小紅1
新聞類型是......視頻       用戶類型是....小賀1
池中一共3個對象
*/

實現部分代碼

package com.yuan.dp.flyweighty;

import java.util.HashMap;

public abstract class 享元抽象類 {
    abstract void use();
}




class 享元實現類 extends 享元抽象類{
    /**
     * 網站類型
     */
    private String type;
    private  User user;

    public 享元實現類(String type,User user) {
        this.type = type;
        this.user = user;
    }

    @Override
    void use(){
        System.out.println("新聞類型是......" + type  + "       用戶類型是...." + user.getName());
    }
}

class Web工廠類{
    /**
     * Web池
     */
    HashMap<String,享元實現類> webPool = new HashMap();

    /**
     * 獲得一個網站類型
     * @param type 網站類型
     * @return 網站類型
     */
    public 享元實現類 getFlyweihty(String type ,User user){

        //如果沒有就往池中放一個
        if (!webPool.containsKey(type)){
            webPool.put(type,new 享元實現類(type,user ));
        }
        return webPool.get(type);
    }

    /**
     *
     * @return
     */
    void getSize(){
        System.out.println("池中一共"+webPool.size()+"個對象");
    }
}
class User{
    /**
     * 用戶姓名
     */
    private String name;

    public User(String name) {
        this.name = name;
    }

    /**
     * 獲取用戶姓名
     * @return 用戶姓名
     */
    public String getName() {
        return name;
    }
}

享元模式介紹

抽象享元角色:定義享元類。

具體享元角色:實現了享元角色的必要方法躏鱼。

享元工廠方法:負責創(chuàng)建管理享元角色氮采。

平常不經意就會用到,實際學了也沒啥效果........

?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末染苛,一起剝皮案震驚了整個濱河市鹊漠,隨后出現的幾起案子,更是在濱河造成了極大的恐慌茶行,老刑警劉巖躯概,帶你破解...
    沈念sama閱讀 218,451評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異拢军,居然都是意外死亡楞陷,警方通過查閱死者的電腦和手機怔鳖,發(fā)現死者居然都...
    沈念sama閱讀 93,172評論 3 394
  • 文/潘曉璐 我一進店門茉唉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人结执,你說我怎么就攤上這事度陆。” “怎么了献幔?”我有些...
    開封第一講書人閱讀 164,782評論 0 354
  • 文/不壞的土叔 我叫張陵懂傀,是天一觀的道長。 經常有香客問我蜡感,道長蹬蚁,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,709評論 1 294
  • 正文 為了忘掉前任郑兴,我火速辦了婚禮犀斋,結果婚禮上,老公的妹妹穿的比我還像新娘情连。我一直安慰自己叽粹,他們只是感情好,可當我...
    茶點故事閱讀 67,733評論 6 392
  • 文/花漫 我一把揭開白布却舀。 她就那樣靜靜地躺著虫几,像睡著了一般。 火紅的嫁衣襯著肌膚如雪挽拔。 梳的紋絲不亂的頭發(fā)上辆脸,一...
    開封第一講書人閱讀 51,578評論 1 305
  • 那天,我揣著相機與錄音螃诅,去河邊找鬼啡氢。 笑死始腾,一個胖子當著我的面吹牛,可吹牛的內容都是我干的空执。 我是一名探鬼主播浪箭,決...
    沈念sama閱讀 40,320評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼辨绊!你這毒婦竟也來了奶栖?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,241評論 0 276
  • 序言:老撾萬榮一對情侶失蹤门坷,失蹤者是張志新(化名)和其女友劉穎宣鄙,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體默蚌,經...
    沈念sama閱讀 45,686評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡冻晤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,878評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了绸吸。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鼻弧。...
    茶點故事閱讀 39,992評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖锦茁,靈堂內的尸體忽然破棺而出攘轩,到底是詐尸還是另有隱情,我是刑警寧澤码俩,帶...
    沈念sama閱讀 35,715評論 5 346
  • 正文 年R本政府宣布度帮,位于F島的核電站,受9級特大地震影響稿存,放射性物質發(fā)生泄漏笨篷。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,336評論 3 330
  • 文/蒙蒙 一瓣履、第九天 我趴在偏房一處隱蔽的房頂上張望率翅。 院中可真熱鬧,春花似錦拂苹、人聲如沸安聘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽浴韭。三九已至,卻和暖如春脯宿,著一層夾襖步出監(jiān)牢的瞬間念颈,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評論 1 270
  • 我被黑心中介騙來泰國打工连霉, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留榴芳,地道東北人嗡靡。 一個月前我還...
    沈念sama閱讀 48,173評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像窟感,于是被迫代替她去往敵國和親讨彼。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,947評論 2 355

推薦閱讀更多精彩內容