工廠方法模式

模式定義

定義一個(gè)用于創(chuàng)建對(duì)象的接口,讓子類決定實(shí)例化哪一個(gè)類,工廠方法使一個(gè)類的實(shí)例化延遲到其子類。

模式結(jié)構(gòu)

模式結(jié)構(gòu)

代碼實(shí)現(xiàn)

public interface Human {
    void print();
}

public class Man implements Human {
    public void print() {
        System.out.println("我是男人");
    }
}

public class Woman implements Human {
    public void print() {
        System.out.println("我是女人");
    }
}

public abstract class HumanFactory {
    public abstract Human createHuman();
}

public class ManFactory extends HumanFactory {
    @Override
    public Human createHuman() {
        return new Man();
    }
}

public class WomanFactory extends HumanFactory {
    @Override
    public Human createHuman() {
        return new Woman();
    }
}

public class Client {
    public static void main(String[] args) {
        HumanFactory manFactory = new ManFactory();
        Human man = manFactory.createHuman();
        man.print();
    }
}

模式的優(yōu)缺點(diǎn)

優(yōu)點(diǎn)

  1. 可以在不知道具體的類的情況下編程。

  2. 在系統(tǒng)增加新的產(chǎn)品時(shí),只需要添加一個(gè)具體產(chǎn)品類和對(duì)應(yīng)的實(shí)現(xiàn)工廠,無需對(duì)原工廠進(jìn)行任何修改,很好地符合了“開閉原則”。

缺點(diǎn)

具體產(chǎn)品對(duì)象和工廠方法耦合性。

思考

模式本質(zhì):延遲到子類選擇實(shí)現(xiàn)。

開發(fā)中的應(yīng)用場景

  1. 如果一個(gè)類需要?jiǎng)?chuàng)建某個(gè)接口的對(duì)象,但是又不知道具體的實(shí)現(xiàn),這種情況可以選用工廠方法模式,
    把創(chuàng)建對(duì)象的工作延遲到子類中去實(shí)現(xiàn)。

  2. 如果一個(gè)類本身就希望由它的子類來創(chuàng)建所需的對(duì)象的時(shí)候,應(yīng)該使用工廠方法模式。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容