Java設(shè)計(jì)模式——工廠

Java設(shè)計(jì)模式——工廠

簡單工廠

簡單工廠模式就是定義一個(gè)接口职恳,寫共性的方法操禀,做具體不同的事揪惦,就像發(fā)QQ,發(fā)微信,都是發(fā)送東西驹饺,但是發(fā)送是不同的軟件
步驟:
1.定義接口蝌借,
2.創(chuàng)建各自子類實(shí)現(xiàn)接口酬荞,重寫方法咧党,坐各自的事;
3.創(chuàng)建工廠類
4.調(diào)用時(shí)候通過調(diào)用方法時(shí)候,傳遞的參數(shù)不同返回不同實(shí)現(xiàn)類的對(duì)象
優(yōu)缺點(diǎn):
不利于擴(kuò)展盼理,擴(kuò)展需要改工程類代碼臊诊,傳遞的參數(shù)找不到匹配會(huì)很尷尬儡首;
代碼:

//創(chuàng)建接口
 public interface ISender {
    void  send();
}
//創(chuàng)建QQ具體類實(shí)現(xiàn)接口
 public class SendQQ implements ISender {
    @Override
    public void send() {
        Log.e(TAG, "發(fā)QQ " );
    }
}
//創(chuàng)建微信具體類實(shí)現(xiàn)接口
 public class SendWeChat implements ISender {
    @Override
    public void send() {
        Log.e(TAG, "發(fā)微信消息" );
    }
}
//創(chuàng)建工廠類
 public class SendFactory {
//    簡單的工廠
    public ISender sendMessage(String s) {
        if ("QQ".equals(s)) {
            return new SendQQ();
        } else if ("WeChat".equals(s)) {
            return new SendWeChat();
        }
        return null;
    }
 //調(diào)用
  SendFactory sendFactory = new SendFactory();
        sendFactory.sendMessage("QQ");

多個(gè)工廠

多個(gè)工廠和簡單工廠的區(qū)別就在工廠類不是按調(diào)用方法傳遞來的參數(shù)匹配迈勋,而是寫多個(gè)方法鼻吮,直接返回對(duì)應(yīng)的實(shí)現(xiàn)類對(duì)象

@Override
  public class SendFactory {

    public ISender sendQQMessage(){
       return new SendQQ();
    }
    public ISender senWeChat(){
        return new SendWeChat();
    }
}

這樣的缺點(diǎn)依然很明顯禽篱,就是新增加實(shí)現(xiàn)類需要改工廠類的代碼脚仔;

靜態(tài)工廠

靜態(tài)工廠就是上面的方法增加static 修飾吕朵,這樣比起多個(gè)工廠好處就在不用創(chuàng)建對(duì)象猎醇,直接類名調(diào)用

@Override
  public class SendFactory {

    public static ISender sendQQMessage(){
       return new SendQQ();
    }
    public static ISender senWeChat(){
        return new SendWeChat();
    }
}

抽象工廠

抽象工廠的實(shí)現(xiàn)就是增加了一個(gè)接口,創(chuàng)建不同的工廠來實(shí)現(xiàn)這個(gè)接口哮塞。這樣的好處就是擴(kuò)展忆畅,不用去改工廠類的代碼。直接增加工廠類實(shí)現(xiàn)這個(gè)接口就好

 //工廠接口  你應(yīng)該思考掂之,這個(gè)接口為什么要定義冯乘,因?yàn)樗麄冇泄残载で樱际前l(fā)送東西,具有發(fā)送功能辱士,所以接口定義一個(gè)make方法泪掀,類型是發(fā)送類型就是發(fā)送不同東西共性的類型

public interface IProvider {
ISender make();
}

```java
QQ發(fā)送工廠

public class SendQQFactory implements IProvider {
    @Override
    public ISender make() {
   return new  SendQQ();
    }
}
微信發(fā)送工廠
public class SendWeChatFactory implements IProvider {
    @Override
    public ISender make() {
   return new SendWeChat();
    }
}

//調(diào)用的時(shí)候直接
  //抽象工廠的調(diào)用
       new  SendQQFactory().make();
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市识补,隨后出現(xiàn)的幾起案子族淮,更是在濱河造成了極大的恐慌,老刑警劉巖凭涂,帶你破解...
    沈念sama閱讀 207,248評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件祝辣,死亡現(xiàn)場離奇詭異,居然都是意外死亡切油,警方通過查閱死者的電腦和手機(jī)蝙斜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來澎胡,“玉大人孕荠,你說我怎么就攤上這事」ニ” “怎么了稚伍?”我有些...
    開封第一講書人閱讀 153,443評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長戚宦。 經(jīng)常有香客問我个曙,道長,這世上最難降的妖魔是什么受楼? 我笑而不...
    開封第一講書人閱讀 55,475評(píng)論 1 279
  • 正文 為了忘掉前任垦搬,我火速辦了婚禮,結(jié)果婚禮上艳汽,老公的妹妹穿的比我還像新娘猴贰。我一直安慰自己,他們只是感情好河狐,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評(píng)論 5 374
  • 文/花漫 我一把揭開白布米绕。 她就那樣靜靜地躺著瑟捣,像睡著了一般。 火紅的嫁衣襯著肌膚如雪义郑。 梳的紋絲不亂的頭發(fā)上蝶柿,一...
    開封第一講書人閱讀 49,185評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音非驮,去河邊找鬼。 笑死雏赦,一個(gè)胖子當(dāng)著我的面吹牛劫笙,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播星岗,決...
    沈念sama閱讀 38,451評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼填大,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了俏橘?” 一聲冷哼從身側(cè)響起允华,我...
    開封第一講書人閱讀 37,112評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎寥掐,沒想到半個(gè)月后靴寂,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,609評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡召耘,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評(píng)論 2 325
  • 正文 我和宋清朗相戀三年百炬,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片污它。...
    茶點(diǎn)故事閱讀 38,163評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡剖踊,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出衫贬,到底是詐尸還是另有隱情德澈,我是刑警寧澤,帶...
    沈念sama閱讀 33,803評(píng)論 4 323
  • 正文 年R本政府宣布固惯,位于F島的核電站梆造,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏缝呕。R本人自食惡果不足惜澳窑,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望供常。 院中可真熱鬧摊聋,春花似錦、人聲如沸栈暇。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至煎源,卻和暖如春色迂,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背手销。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評(píng)論 1 261
  • 我被黑心中介騙來泰國打工歇僧, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人锋拖。 一個(gè)月前我還...
    沈念sama閱讀 45,636評(píng)論 2 355
  • 正文 我出身青樓诈悍,卻偏偏與公主長得像,于是被迫代替她去往敵國和親兽埃。 傳聞我的和親對(duì)象是個(gè)殘疾皇子侥钳,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容

  • 一、工廠模式簡介 意圖定義一個(gè)創(chuàng)建對(duì)象的接口柄错,讓其子類自己決定實(shí)例化哪一個(gè)工廠類舷夺,工廠模式使其創(chuàng)建過程延遲到子類進(jìn)...
    怡紅快綠閱讀 594評(píng)論 0 0
  • 在java中,通常使用new操作符創(chuàng)建對(duì)象的實(shí)例售貌。但是在一些情況下给猾,new操作符直接生成對(duì)象會(huì)帶來一些問題,例如:...
    步積閱讀 861評(píng)論 2 3
  • 一趁矾、工廠模式主要是為創(chuàng)建對(duì)象提供過渡接口耙册,以便將創(chuàng)建對(duì)象的具體過程屏蔽隔離起來,達(dá)到提高靈活性的目的毫捣。 工廠模式在...
    李序鍇閱讀 556評(píng)論 0 0
  • 1最近買了《百年德魯克》详拙、《斷舍離》《奇特的一生》《搞定123》每本書都抽時(shí)間看了一些,只是把《晨間日記的奇跡》看...
    君子蘭1閱讀 127評(píng)論 0 0
  • 早上不舒服蔓同,去醫(yī)院檢查饶辙。 在我前面的是一個(gè)70歲左右的老人。老人穿著深藍(lán)色棉襖斑粱,坐在輪椅上弃揽,兩頰干癟,眼睛也有些凹...
    琉璃mm閱讀 274評(píng)論 0 0