Java多執行緒-56-簡單工廠設計模式
阿新 • • 發佈:2019-01-13
關於設計模式,前面我們學習了單例設計模式,這篇再來學習一個工廠方法模式,在介紹工廠方法模式之前,我們來看一個簡單工廠模式。工廠模式的最大優點就是客戶端不需要再建立物件,工廠類中就幫你提前建立好了,直接通過工廠類名點方法呼叫就好。簡單工廠模式又叫靜態方法工廠模式,它定義了一個具體的工廠類來建立一些類的例項。
1.程式碼舉例
在Eclipse下建立一個samplefactory包,然後下面建立以下幾個類,程式碼如下。
Animal.java程式碼
package samplefactory; public abstract class Animal { public abstract void eat(); }
AnimalFactory.java程式碼
package samplefactory;
public class AnimalFactory {
public static Dog createDog() {
return new Dog();
}
public static Cat createCat() {
return new Cat();
}
}
Cat.java 程式碼
package samplefactory; public class Cat extends Animal { @Override public void eat() { System.out.println("貓吃魚"); } }
Dog.java程式碼
package samplefactory;
public class Dog extends Animal {
@Override
public void eat() {
System.out.println("狗吃肉");
}
}
Test.java程式碼
package samplefactory; public class Test { public static void main(String[] args) { Dog d = AnimalFactory.createDog(); d.eat(); Cat c = AnimalFactory.createCat(); c.eat(); } }
執行下
狗吃肉
貓吃魚
看到AnimalFactory類中需要建立多個動物,我們優化下程式碼,用一個方法就可以包括上面dog和cat的建立過程。
package samplefactory;
public class AnimalFactory {
public static Animal create(String name) {
if("dog".equals(name)) {
return new Dog();
}else if("cat".equals(name)) {
return new Cat();
}else {
return null;
}
}
}
修改下測試類
package samplefactory;
public class Test {
public static void main(String[] args) {
Dog d = (Dog) AnimalFactory.create("dog");
d.eat();
Cat c = (Cat) AnimalFactory.create("cat");
c.eat();
}
}
上面就是簡單工廠模式,優點就是客戶端不需要再負責物件的建立,從而明確了各個類的職責。缺點也很明顯,這個靜態工廠類負責所有物件的建立,如果有新物件增加,或者有些物件建立方式不同,就要不斷地修改工廠類,不利於後期維護。下一篇,我們在這個基礎上學習工廠方法模式,繼續使用上面優點,避免缺點。