java設計模式學習筆記--簡單工廠模式
阿新 • • 發佈:2019-01-03
1. 什麼是簡單工廠模式
簡單工廠模式是屬於建立型模式,又叫做靜態工廠方法(Static Factory Method)模式。簡單工廠模式是由一個工廠物件決定創建出哪一種產品類的例項。但是嚴格來說,簡單工廠模式不是設計模式,它更像是一種程式設計習慣。
2. 簡單工廠模式的結構
(請允許我無恥的偷了百度百科的圖)
從上面的類圖可以看出,簡單工廠模式一共有三種類:
1、抽象產品介面IProduct。
2、具體的產品類Product。
3、工廠類Creator。
3、示例程式碼
簡單工廠模式很簡單,下面直接上示例程式碼。
抽象產品介面:
//披薩介面
public interface Pizza {
//切片
void cut();
//裝盒
void box();
}
具體的產品類:
//這是一個芝士披薩
public class CheesePizza implements Pizza{
@Override
public void cut() {
System.out.println("CheesePizza:cut");
}
@Override
public void box() {
System.out.println("CheesePizza:box");
}
}
//蛤蜊披薩
public class ClamPizza implements Pizza {
@Override
public void cut() {
System.out.println("ClamPizza:cut");
}
@Override
public void box() {
System.out.println("ClamPizza:box");
}
}
工廠類Creator:
public class SimplePizzaFactory {
public static Pizza factory(String type){
Pizza pizza = null;
if (type == null) {
return pizza;
}else if (type.equals("cheese")){
return new CheesePizza();
}else if (type.equals("clam")){
return new ClamPizza();
}else {
return pizza;
}
}
}
測試類:
public class Client {
public static void main(String[] args){
Pizza cheese = SimplePizzaFactory.factory("cheese");
Pizza clam = SimplePizzaFactory.factory("clam");
cheese.box();
clam.cut();
}
}
輸出:
4、優缺點
到此,簡單工廠模式就結束了,是不是很簡單哪。那麼如此簡單的模式到底有什麼用哪?
優點:簡單工廠模式將建立的程式碼封裝成一個,當以後改變只需要修改這個類就行了。在客戶類中,我們刪除了具體的例項化過程,這就是解耦啊。
缺點:試想一下這種情況,如果我現在有10個具體的披薩類,那是不是要在工程類裡面寫10個else if哪,簡單工廠模式把所有的處理邏輯都放在了這個工廠類中,使得這個類承擔了過大的責任,如果哪天掛了,那麼對整個系統都會有很大的影響。