簡單工廠模式不屬于標(biāo)準(zhǔn)的Java 23設(shè)計(jì)模式之內(nèi)。根據(jù)分類瑟由,簡單工廠模式又分類為:1.普通簡單工廠模式。2.多方法簡單工廠模式绿鸣。3.靜態(tài)方法簡單工廠模式暂氯。
1.普通簡單工廠模式
先從最簡單的普通簡單工廠模式開始,工廠模式就是用來進(jìn)行類的實(shí)例化擎厢,對(duì)實(shí)現(xiàn)了同一接口的類進(jìn)行類的實(shí)例化辣吃。
公共的接口
public interface Animal {
void eat();
}
類實(shí)現(xiàn)公共的接口
public class Dog implements Animal{
@Override
public void eat() {
// TODO Auto-generated method stub
System.out.println("Dog eat");
}
}
public class Cat implements Animal{
@Override
public void eat() {
// TODO Auto-generated method stub
System.out.println("Cat eat");
}
}
工廠類,用來創(chuàng)建實(shí)例
public class AnimalFactory {
public Animal makeAnimal(String type) {
if (type.equals("dog")) {
return new Dog();
} else if (type.equals("cat")) {
return new Cat();
}
return null;
}
}
測試類
public class AnimalTest {
public static void main(String[] args) {
AnimalFactory animalFactory = new AnimalFactory();
Animal cat = animalFactory.makeAnimal("cat");
cat.eat();
Animal dog = animalFactory.makeAnimal("dog");
dog.eat();
}
}
輸出:
Cat eat
Dog eat
2.多方法簡單工廠模式
接著厘惦,循序漸進(jìn)宵蕉,我們開始了解多方法簡單工廠模式,為了避免在創(chuàng)建對(duì)象的時(shí)候傳遞錯(cuò)誤字符串導(dǎo)致創(chuàng)建錯(cuò)誤實(shí)例羡玛,我們改成不傳遞字符串的方式宗苍,在工廠類里面,有多個(gè)工廠方法來達(dá)到創(chuàng)建多個(gè)對(duì)象的目的让歼。
1.修改工廠類
public class AnimalFactory {
public Animal produceDog() {
return new Dog();
}
public Animal producCat() {
return new Cat();
}
}
測試類修改:
public class AnimalTest {
public static void main(String[] args) {
AnimalFactory animalFactory = new AnimalFactory();
Animal cat = animalFactory.producCat();
cat.eat();
Animal dog = animalFactory.produceDog();
dog.eat();
}
}
輸出:
Cat eat
Dog eat
3.靜態(tài)方法簡單工廠模式
最后挪钓,我們開始了解靜態(tài)方法簡單工廠模式,為了不需要new 工廠類倚评,我們?cè)诠S類創(chuàng)建對(duì)象的方法改成靜態(tài)調(diào)用。
1.修改工廠類
public class AnimalFactory {
public static Animal produceDog() {
return new Dog();
}
public static Animal producCat() {
return new Cat();
}
}
測試類
public class AnimalTest {
public static void main(String[] args) {
Animal cat = AnimalFactory.producCat();
cat.eat();
Animal dog = AnimalFactory.produceDog();
dog.eat();
}
}
輸出:
Cat eat
Dog eat
綜上所述:對(duì)比三種簡單工廠模式盔性,不難看出,第三種方式的優(yōu)勢(shì)最為明顯冕香,不需要擔(dān)心在獲取實(shí)例的時(shí)候傳遞錯(cuò)字符串后豫,也避免了去寫new 工廠類的繁瑣,所以构眯,一般情況下早龟,我們會(huì)使用第三種方式。