0x001 工廠模式 -- Factory Pattern

一郭计、面向接口編程

在做一個(gè)項(xiàng)目的時(shí)候霸琴,為了實(shí)現(xiàn)一個(gè)功能,我們總是會(huì)將它先封裝成一個(gè)類--當(dāng)然這是面向?qū)ο笳Z言的共識(shí)啊昭伸,封裝嘛梧乘!例如:我們要實(shí)現(xiàn)一個(gè)Circle,他的功能是繪制一個(gè)圓庐杨。于是我們寫了一個(gè)類

/**
 * Created by FollowWinter on 9/27/16.
 */
public class Circle {
    public void draw() {
        System.out.println("Circle draw");
    }
}

后來發(fā)現(xiàn)选调,我們還需要其他的圖形,比如Square灵份、Rectangle,于是我們就接著寫了兩個(gè)類:

/**
 * Created by FollowWinter on 9/27/16.
 */
public class Rectangle {
    public void draw() {
        System.out.println("Rectangle draw");
    }
}

/**
 * Created by FollowWinter on 9/27/16.
 */
public class Square{
    public void draw() {
        System.out.println("Square draw");
    }
}

添加了這三個(gè)之后仁堪,我們就發(fā)現(xiàn)了一些東西,這三個(gè)都是屬于繪制圖形的類填渠,他們之間唯一的不同只是繪制圖形的不同弦聂,于是我們抽象出了一個(gè)共同的父類:

/**
 * Created by FollowWinter on 9/27/16.
 */
public class Shap {
    void  draw(){}
}

同時(shí)讓Circle、Rectangle氛什、Square繼承并且重寫draw方法莺葫,這是個(gè)好方法,但是這時(shí)我們可以看出枪眉,Shap中并沒有具體的實(shí)現(xiàn)捺檬,所以用接口更好,同時(shí)也更加的清晰明了贸铜。當(dāng)我們需要添加新的類的時(shí)候堡纬,只要遵守接口中的方法,便可以編寫出新的功能萨脑,但是不改變類的調(diào)用形式隐轩。
而在調(diào)用的時(shí)候我們便可以這么調(diào)用:

        Shap circle=new Circle();
        circle.draw();
        Shap square=new Square();
        square.draw();
        Shap rectangle=new Rectangle();
        rectangle.draw();

二、工廠方法


如上面向接口的使用地方很多渤早,比如多種數(shù)據(jù)庫的鏈接湖雹、支付方式的選擇等等躲叼,但是上面的方式依舊存在一些問題复局,例如我們想要調(diào)用Square.draw()必須知道Square這個(gè)類名威创,如果類名錯(cuò)誤則無法實(shí)例化,所以提出了工廠模式元潘,用于屏蔽類的選擇
添加ShapFactory:

    /**
     * Created by FollowWinter on 9/27/16.
     */
    public class ShapeFactory {
    public static final int SHAPE_SQUARE=1;
    public static final int SHAPE_CIRCLE=2;
    public static final int SHAPE_RECTANGLE=3;

    public Shape getShap(int shapType){
        switch (shapType){
            case SHAPE_CIRCLE:
                return new Circle();
            case SHAPE_RECTANGLE:
                return new Rectangle();
            case SHAPE_SQUARE:
                return new Square();
            default:
                return null;
        }

    }
}

調(diào)用:

    ShapeFactory shapeFactory=new ShapeFactory();
    Shape circle2=shapeFactory.getShap(ShapeFactory.SHAPE_CIRCLE);
    circle2.draw();

    Shape square2=shapeFactory.getShap(ShapeFactory.SHAPE_SQUARE);
    square2.draw();

    Shape rectangle2=shapeFactory.getShap(ShapeFactory.SHAPE_RECTANGLE);
    rectangle2.draw();
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子川尖,更是在濱河造成了極大的恐慌,老刑警劉巖茫孔,帶你破解...
    沈念sama閱讀 212,294評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件叮喳,死亡現(xiàn)場離奇詭異,居然都是意外死亡缰贝,警方通過查閱死者的電腦和手機(jī)馍悟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,493評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來剩晴,“玉大人锣咒,你說我怎么就攤上這事≡廾郑” “怎么了毅整?”我有些...
    開封第一講書人閱讀 157,790評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長绽左。 經(jīng)常有香客問我悼嫉,道長,這世上最難降的妖魔是什么拼窥? 我笑而不...
    開封第一講書人閱讀 56,595評(píng)論 1 284
  • 正文 為了忘掉前任承粤,我火速辦了婚禮,結(jié)果婚禮上闯团,老公的妹妹穿的比我還像新娘辛臊。我一直安慰自己,他們只是感情好房交,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,718評(píng)論 6 386
  • 文/花漫 我一把揭開白布彻舰。 她就那樣靜靜地躺著,像睡著了一般候味。 火紅的嫁衣襯著肌膚如雪刃唤。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,906評(píng)論 1 290
  • 那天白群,我揣著相機(jī)與錄音尚胞,去河邊找鬼。 笑死帜慢,一個(gè)胖子當(dāng)著我的面吹牛笼裳,可吹牛的內(nèi)容都是我干的唯卖。 我是一名探鬼主播,決...
    沈念sama閱讀 39,053評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼躬柬,長吁一口氣:“原來是場噩夢啊……” “哼拜轨!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起允青,我...
    開封第一講書人閱讀 37,797評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤橄碾,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后颠锉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體法牲,經(jīng)...
    沈念sama閱讀 44,250評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,570評(píng)論 2 327
  • 正文 我和宋清朗相戀三年琼掠,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了皆串。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,711評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡眉枕,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出怜森,到底是詐尸還是另有隱情速挑,我是刑警寧澤,帶...
    沈念sama閱讀 34,388評(píng)論 4 332
  • 正文 年R本政府宣布副硅,位于F島的核電站姥宝,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏恐疲。R本人自食惡果不足惜腊满,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,018評(píng)論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望培己。 院中可真熱鬧碳蛋,春花似錦、人聲如沸省咨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,796評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽零蓉。三九已至笤受,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間敌蜂,已是汗流浹背箩兽。 一陣腳步聲響...
    開封第一講書人閱讀 32,023評(píng)論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留章喉,地道東北人汗贫。 一個(gè)月前我還...
    沈念sama閱讀 46,461評(píng)論 2 360
  • 正文 我出身青樓身坐,卻偏偏與公主長得像,于是被迫代替她去往敵國和親芳绩。 傳聞我的和親對(duì)象是個(gè)殘疾皇子掀亥,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,595評(píng)論 2 350

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