(一)需求場景
生活中具體產品的構建都是由工廠來生產的,根據不同的條件會生產出不同的產品出來.假如需要一輛汽車,可以直接從工廠裏面提貨,而不用去管這輛汽車是怎麼做出來的,以及這個汽車裏面的具體實現。
(二)基本介紹
簡單工廠模式是屬於創建型模式,是工廠模式的一種。簡單工廠模式是由一
個工廠對象決定創建出哪一種產品類的實例。簡單工廠模式是工廠模式家族
中最簡單實用的模式
簡單工廠模式:定義了一個創建對象的類,由這個類來封裝實例化對象的行
爲(代碼)
在軟件開發中,當我們會用到大量的創建某種、某類或者某批對象時,就會
使用到工廠模式
(三)工作原理
1:工廠方法模式將對象的實例化推遲到子類,創建過程在其子類執行.
2: 作爲一種創建類模式,在任何需要生成複雜對象的地方,都可以使用工廠方法模式。有一點需要注意的地方就是複雜對象適合使用工廠模式,而簡單對象,特別是只需要通過 new 就可以完成創建的對象,無需使用工廠模式。如果使用工廠模式,就需要引入一個工廠類,會增加系統的複雜度
3:工廠模式缺點是違反了設計模式的ocp原則,即對擴展開放,對修改關閉.如果需要新增產品,那麼就需要修改創建工廠中的方法.
(四)代碼實例
當前代碼實例模擬一個創建Human對象實例的工廠模式,其中產品包括Male和Female,在HumanFactory.createHuman通過用戶給予性別來生成不同的實例
//Human接口,工廠產品基類,定義產品基本的功能
public interface Human {
public void eat();
public void sleep();
public void beat();
}
//Male實現Human,特定的產品,實現具體的功能
public class Male implements Human{
@Override
public void eat(){
System.out.println("Male can eat");
}
@Override
public void sleep(){
System.out.println("Male can sleep");
}
@Override
public void beat(){
System.out.println("Male can beat");
}
}
public class Female implements Human {
@Override
public void eat() {
System.out.println("Female can eat");
}
@Override
public void sleep() {
System.out.println("Female can sleep");
}
@Override
public void beat() {
System.out.println("Female can beat");
}
}
// 普通工廠類(創建Human對象)
public class HumanFactory {
public Human createHuman(String gender) {
if (gender.equals("male")) {
return new Male();
} else if (gender.equals("female")) {
return new Female();
} else {
return null;
}
}
}
/**
* 測試類,工廠根據性別創建不同對象
**/
public class Main {
public static void main(String[] args){
HumanFactory factory = new HumanFactory();
Human male = factory.createHuman("male");
male.eat();
male.sleep();
male.beat();
}
}
(五)應用實例
1:Hibernate 換數據庫只需換方言和驅動就可以
2:在 Java 庫裏面。根據不同的參數,getInstance() 方法會返回不同的 Calendar 對象。