首頁 >Java >java教程 >設計模式之簡單工廠

設計模式之簡單工廠

巴扎黑
巴扎黑原創
2017-06-26 09:42:421415瀏覽

      設計模式既上一篇關於單例模式後,終於要接著寫下去了,先來個最簡單的,簡單工廠模式,這個設計模式很簡單,也是最常用的(是不是好多東西都這樣,越簡單,門檻越低,越討人喜歡)。

概念(原諒我無恥的抄百度百科):

      簡單工廠模式是屬於創建型模式,又叫做靜態工廠方法(Static Factory Method)模式,但不屬於23種GOF設計模式之一。簡單工廠模式是由一個工廠物件決定建立出哪一種產品類別的實例。簡單工廠模式是工廠模式家族中最簡單實用的模式,可以理解為是不同工廠模式的一個特殊實現。

     這裡所說的很清楚,一個工廠N多對象,這就是簡單工廠的實質,具體的UML類別圖如下

     

先安利下processon這個在線的工具, 這是我的邀請鏈接,當然你如果需要畫很多圖,請花錢支持他們。

來解釋下這個類圖,三部分組成,一是Creator,是工廠類,二是IProduct接口,三是具體的產品A和B。

 

具體的程式碼如下

#產品介面:

public interface IProduct {void meathod();
}

特定產品:

public class ProductA implements IProduct {public void meathod() {
        System.out.printf("产品A");
    }
}
public class ProductB implements IProduct {public void meathod() {
        System.out.printf("产品B");
    }
}

工廠:

public class Creator {public static IProduct createProduct(String productName) {if (null == productName) {return null;
        } else if ("A".equals(productName)) {return new ProductA();
        } else if ("B".equals(productName)) {return new ProductB();
        }return null;
    }public static void main(String[] args) {
        IProduct productA = Creator.createProduct("A");
        productA.meathod();

        IProduct productB = Creator.createProduct("B");
        productB.meathod();
    }
}

#輸出: 產品A產品B

 

特定實例:

這樣簡單的模式是比較常用的,拿我們的專案來說,我們做的產品採用多個合作方的各種接口,其中大部分接口都是相同的只是再具體的字段和細節不一樣而已,例如去申請授信都是一些個人隱私信息,各家要的大體相同,只是個別的信息不同而已,這樣就很適合工廠模式。

 

優缺點:

優點:解耦,幫助封裝。

缺點:增加客戶端複雜度,不利於擴充子工廠

 

#其實簡單工廠模式的本質就是選擇實作。

這個簡單的就說這和麼多吧。

 

以上是設計模式之簡單工廠的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn