【黑馬程序員濟南中心】工廠設計模式-工廠方法模式
咱們上星期和你們聊的是工廠設計模式裏的簡單工廠模式,今天咱們和你們聊一聊第二種工廠模式--工廠方法模式,這一種在咱們日常項目開發中也是比較經常使用的工廠設計模式。咱們先聊一聊什麼是工廠方法模式。程序員
工廠方法模式:定義一個用於建立對象的接口,讓子類決定實例化哪個類。工廠方法使一個類的實例化延遲到其子類。它的核心結構有四個角色,分別是抽象工廠;具體工廠;抽象產品;具體產品。編程
咱們也能夠這樣去理解它:工廠方法模式(FACTORY METHOD)是一種經常使用的對象建立型設計模式,此模式的核心精神是封裝類中不變的部分,提取其中個性化善變的部分爲獨立類,經過依賴注入以達到解耦、複用和方便後期維護拓展的目的。設計模式
工廠方法模式有一個通用的類圖以下:ide
在該模式中,抽象產品類Product負責定義產品的共性,實現對事物最抽象的定義;Creator爲抽象建立類,也就是抽象工廠,具體如何建立產品類有具體的實現ConcreteCreator完成的。spa
咱們經過一淺顯的代碼來具體的展現一下工廠方法模式在咱們的實際運用中是以哪一種形式體現的。.net
抽象產品類:設計
public abstract class Product {對象
/**接口
* 產品類的公共方法開發
*/
public void method1(){
//業務邏輯處理
}
//抽象方法
public abstract void method2();
}
具體產品類:
public class ConcreteProduct1 extends Product{
/**
* 具體產品類
*/
public void method2() {
// 業務邏輯處理
}
}
public class ConcreteProduct2 extends Product{
/**
* 具體產品類
*/
public void method2() {
// 業務邏輯處理
}
}
抽象工廠類:
public abstract class Creator {
/**
* 建立一個產品對象,其輸入參數類型能夠自行設置
* 一般爲String ,Enum ,Class等,固然也能夠爲空
*/
public abstract <T extends Product> T createProduct(Class<T> c);
}
具體工廠類:
public class ConcreteCreator extends Creator{
/**
* 具體工廠類
*/
@SuppressWarnings("unchecked")
public <T extends Product> T createProduct(Class<T> c) {
Product product = null;
try {
product = (Product) Class.forName(c.getName()).newInstance();
} catch (Exception e) {
// 異常處理
}
return (T)product;
}
}
場景類:
public class Client {
/**
* 場景類
*/
@SuppressWarnings("unused")
public static void main(String[] args) {
Creator creator = new ConcreteCreator();
Product product = creator.createProduct(ConcreteProduct1.class);
/**
* 繼續業務處理
*/
}
}
以上就是工廠方法模式簡單的具體應用,你們能夠先簡單的在本身的代碼中去應用一下。設計模式的思想不是一蹴而就的,你們只有不斷的在代碼中去實踐去練習才能更好的使設計模式的思想深刻到咱們日常的編程思想中。