1. 程式人生 > 實用技巧 >到底有什麼可以讓6代程式設計師如此心動

到底有什麼可以讓6代程式設計師如此心動

模式定義

工廠方法模式:又稱為靜態工廠模式,也叫做虛擬構造器模式和多型工廠模式,他屬於類創造模式。在工廠模式中。工廠父類負責定義建立產品物件的公共介面,而工廠子類負責生成具體產品物件。

模式結構

模式分析

工廠模式是簡單工廠模式的進一步抽象和推廣。在工廠方法模式中,核心的工廠類不再負責所有具體產品的建立,而是將生成具體產品類交給子工廠類完成。工廠類和產品類具有平行的等級結構,往往一一對應。

優點:

(1)使用者只需關心產品類對應的工廠類,無需關心具體建立細節。

(2)可以由工廠自主確定建立何種產品物件,而如何建立物件的細節完全封裝在內部。

(3)系統加入新產品無需修改工廠及介面,而只要新增一個實體類和一個實體類的工廠即可。

缺點:

(1)在新增新的產品時,會建立新的實體類和工廠類,在一定程度上增加了系統複雜性,在編譯和執行帶來了額外開銷。

(2)會增加系統的類數,在一定程度上增加了系統的複雜度和理解難度

(3)系統擴充套件困難,不利於系統的擴充套件和維護。

電視案例

TV介面類

package com.zck.factoryfunction;

public interface TV {
    public void play();
}

HaierTV類

package com.zck.factoryfunction;

public class HaierTV implements TV {
    
public void play() { System.out.print("海爾電視正在播放\n"); } }

HisenseTV類

package com.zck.factoryfunction;

public class HisenseTV implements TV {
    public void play() {
        System.out.print("海信電視正在播放\n");
    }
}

factory介面類

package com.zck.factoryfunction;

public interface TVFactory {
    
public TV produceTV(); }

HaierTVFaction類

package com.zck.factoryfunction;

public class HaierTVFactory implements TVFactory {

    public TV produceTV() {
        return new HaierTV();
    }
}

HisenseTVFActory類

package com.zck.factoryfunction;

public class HisenseTVFactory implements TVFactory {

    public TV produceTV() {
        return new HisenseTV();
    }
}

Client類

package com.zck.factoryfunction;

public class Client {

    public static void main(String[] args) {
        TV tv1,tv2;
        TVFactory tvFactory1 = new HaierTVFactory() ;
        TVFactory tvFactory2 = new HisenseTVFactory() ;
        tv1 = tvFactory1.produceTV();
        tv1.play();
        tv2 = tvFactory2.produceTV();
        tv2.play();
    }
}

測試結果