1. 程式人生 > >Java多執行緒-57-工廠方法設計模式

Java多執行緒-57-工廠方法設計模式

這篇,我們來介紹工廠方法模式。工廠方法模式和前面的簡單工廠模式區別就是,我們先定義一個Factory的介面,裡面寫一個createAnimal的方法。然後Dog就建立DogFactory工廠類,Cat就建立CatFactory工廠類。如果還有其他動物,就建立其他動物的工廠類。這樣我們就不用去修改原始的Factory工廠類。這個應用,其實我們在做Selenium POM的時候用到了這種設計模式。

1.程式碼檔案和結構

上面三個檔案Animal.java和Dog.java和Cat.java程式碼沒有改變。

Factory.java 介面內容

package samplefactory;

public interface Factory {
    public Animal createAnimal();
}

DogFactory.java

package samplefactory;

public class DogFactory implements Factory {

	@Override
	public Animal createAnimal() {
		return new Dog();
	}

}

CatFactory.java

package samplefactory;

public class CatFactory implements Factory {

	@Override
	public Animal createAnimal() {
		return new Cat();
	}

}

Test.java

package samplefactory;

public class Test {

	public static void main(String[] args) {
		DogFactory df = new DogFactory();
		Dog d = (Dog) df.createAnimal();
        d.eat();
        
        CatFactory cf = new CatFactory();
        Cat c = (Cat) cf.createAnimal();
        c.eat();
	}

}

這種工廠方法設計模式,優缺點如下

優點:
客戶端不需要再負責物件的建立,從而明確了各個類的職責,如果有新的物件增加,只需要增加一個具體的類和具體的工廠類即可,不影響已有的程式碼,
後期維護容易,增強了系統的擴充套件性。

缺點:
需要額外的編寫程式碼,增加了工作量。