工廠方法模式

模式定義

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

模式結構

模式結構

代碼實現(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)缺點

優(yōu)點

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

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

缺點

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

思考

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

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

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

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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容