簡單工廠模式——2016手機也瘋狂

前言:
在解說工廠模式之前,先嘮一嘮。
在莫蘭蒂颱風第五天後,廈門市民的生活終於基本恢復正常,然而給廈門帶來的傷害,仍在延續(35萬棵樹受災,廈門行)
上一次說要做的一件事,終於是去做了(9月16日申請了個微信公衆號,發了篇文章號召大家救樹,鏈接如下)
http://mp.weixin.qq.com/s?__biz=MzI3NzQ2NTIxMQ==&mid=2247483662&idx=1&sn=322db17aac12e1bdb5d9685f918fb32f&scene=0#wechat_redirect


OK,以下是正題
工廠模式,屬於設計模式中的創建類型,見名知意,就如同工廠的產品一樣,將共性抽象出來成一個產品父類,各子類繼承(或實現)父類,在需要創建一個具體的子類產品時,並不直接通過new的方式,而是構造一個Factory工廠類,由傳入的產品要求(參數)去創建具體的產品子類。

開始代碼:
今天的例子是以手機爲例
所以,主要的java類就是,PhoneFactory類(工廠),Phone類(父類),以及子類(ApplePhone/SamsungPhone/XiaomiPhone);


首先是創建一個工廠類 , 主要的方法是CreatePhone

//手機工廠類
public class PhoneFactory {

    // 定義手機類型
    public static final String Phone_Apple = "Apple";
    public static final String Phone_Samsung = "Sumsang";
    public static final String Phone_Xiaomi = "Xiaomi";


    // 根據不同的手機類型做判斷,生產不同的手機
    public static Phone CreatPhone(String phone_type) {
        switch (phone_type) {
        case Phone_Apple:
            return new ApplePhone();
        case Phone_Samsung:
            return new SamsungPhone();
        case Phone_Xiaomi:
            return new XiaomiPhone();
        default:
            System.out.println("我們工廠不生產這種手機型號");
            return null;
        }
    }
}

其次是具有產品共性的,手機父類Phone
可以是抽象類,也可以是一個接口,定義行爲就好(這裏的行爲是,開機、功能、關機)

//抽象父類,默認統一了開機和關機的行爲,子類繼承這兩個行爲
public abstract class Phone {

    public void open() {
        System.out.println("開機,準備幹活");
    }

    public abstract void function();

    public void close() {
        System.out.println("收工,關機了");
    }
}

最後是產品子類(這裏構造了三類產品),蘋果手機、三星手機、小米手機

//蘋果手機
public class ApplePhone extends Phone {

    @Override
    public void function() {
        System.out.println("蘋果手機,我的特色功能是IPHONE7防水");
    }
}
//三星手機
public class SamsungPhone extends Phone {

    @Override
    public void function() {
        System.out.println("三星手機,我的特色功能是Note7爆炸");
    }

}
//小米手機
public class XiaomiPhone extends Phone{

    @Override
    public void function() {
        System.out.println("小米手機,我的特色功能是MIUI8手機分身");
    }

}

這樣,一個工廠,以及產品線就定義好了。
來測試一下吧

//測試類

public class Test {

    public static void main(String[] args) {

        Phone phone1 = PhoneFactory.CreatPhone("Apple");
        Phone phone2 = PhoneFactory.CreatPhone("Samsung");
        Phone phone3 = PhoneFactory.CreatPhone("Xiaomi");

        phone1.open();
        phone1.function();
        phone1.close();

        phone2.open();
        phone2.function();
        phone2.close();

        phone3.open();
        phone3.function();
        phone3.close();

    }
}

通過工廠創建了三個phone,傳入的參數分別是“Apple”、“Samsung” 、”Xiaomi”,
控制檯輸出結果如下

開機,準備幹活
蘋果手機,我的特色功能是IPHONE7防水
收工,關機了

開機,準備幹活
三星手機,我的特色功能是Note7爆炸
收工,關機了

開機,準備幹活
小米手機,我的特色功能是MIUI8手機分身
收工,關機了

Ok ,簡單工廠模式到此爲止。
工廠模式還有抽象工廠模式等,不僅僅侷限於一類產品,可以構造出不同的產品系列,小夥伴們可以再去挖掘鞏固哦


獻上源碼
http://download.csdn.net/detail/lebang08/9633882

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章