工廠模式(Factory Pattern) 是 Java 中最經常使用的設計模式之一。 這種類型的設計模式屬於建立型模式, 它提供了一種建立對象的最佳方式。 java
在工廠模式中, 咱們在建立對象時不會對客戶端暴露建立邏輯, 而且是經過使用一個共同的接口來指向新建立的對象。 編程
工廠模式讓調用者與被調用者之間解耦 :當二者發生變化時, 相互之間的影響降到最低, 這個原則體顯了項目的可維護性 。
優勢:面向接口編程, 體現了面向對象的思想; 將建立對象的工做轉移到了工廠類;
JDK 中的工廠設計模式實例 :
a.java.util.Calendar, ResourceBundle and NumberFormat getInstance() 使用了工廠方法模式;
b.valueOf() 在包裝類中, 如Boolean, Integer 也使用了工廠方法模式;
c.Spring框架中, 就是使用了工廠模式來解決對象的建立。
設計模式
舉例說明:建立不一樣的產品對象,例如手機、電腦。框架
a.建立接口,以供不一樣產品去實現ide
public interface Product {
public void work();
}
b.以供不一樣對象類去實現接口的方法測試
public class Computer implements Product {
@Override
public void work() {
System.out.println("電腦開始工做...");
}
}
public class Phone implements Product {
@Override
public void work() {
System.out.println("手機開始工做...");
}
}
c.定義工廠類來建立對象spa
public class ProductFactory {
public static Product getProduct(String name) {
if("phone".equals(name)){ //可將"phone"配置到文件中獲取出來
return new Phone();
}else if ("computer".equals(name)){ //可將"computer"配置到文件中獲取出來
return new Computer();
}else{
throw new ProductException("procuct 不存在!"); //自定義異常ProductException
}
}
}
測試對比:設計
public class Test { public static void main(String[] args) {//1 Product p = new Phone();//1 p.work();//2 工廠模式:讓對象之間的強依賴,轉化成對工廠對象的依賴 Product p = ProductFactory.getProduct("phone"); //可將"phone"配置到文件中獲取出來 p.work(); }}