簡單工廠模式並不屬於gof23個經典設計模式,但通常作為23個設計模式的基礎。因為在簡單工廠模式中用於建立例項的方法是static方法,所以它也被稱為static factory method pattern.
定義
定義乙個工廠類,它可以根據引數的不同返回不同類的例項,被建立的例項通常都具有共同的父類。
uml類圖
在簡單工廠模式中,客戶端不用通過new建立物件,只需要通過工廠類就可以建立乙個產品類的例項。
使用簡單工廠模式時,首先要對產品類進行重構,要根據實際情況設計乙個產品層次結構,將所有產品類的公共**移至抽象產品類,並宣告一些抽象方法,以供不同的具體產品類來實現。
public
abstract
class
product
//宣告抽象業務方法
public
abstract
void
methoddiff();
}
然後是具體產品的實現,繼承抽象產品方法,實現自己內部業務邏輯
public
class
concreteproducta
extends
product
}
建立簡單工廠模式的核心工廠類,工廠類提供乙個靜態工廠方法供客戶端使用,根據傳入引數的不同建立不同的產品物件,典型**:
public
class
factory else
if (arg.equalsignorecase("b"))
return product;}}
客戶端呼叫**如下
public
class
client
}
簡單工廠模式很簡單,但是存在問題。當系統中需要引入新的產品時,必定要修改工廠類的源**,違背「開閉原則」。而且在簡單工廠模式中,所有的產品都由同乙個工廠建立,工廠職責較重,業務邏輯也會變得複雜,concreteproduct和factory的耦合度較高。
在工廠方法模式中,針對不同的產品提供不同的工廠,系統提供乙個與產品等級結構對應的工廠等級結構。
定義
定義乙個抽象工廠介面來宣告抽象工廠方法,而由其子類來實現具體工廠方法。
使用場景
在任何需要生成複雜物件的地方,都可以使用工廠方法模式。
用new就可以完成建立的物件無需使用工廠模式
uml類圖
工廠方法模式通用**
/**
* 抽象產品類
* 抽象工廠可以是乙個介面,也可以是乙個抽象類
*/public
abstract
class
product
/**
* 具體產品a
*/public
class
concreteproducta
extends
product
}/**
* 具體產品b
*/public
class
concreteproductb
extends
product
}
接下來定義抽象工廠
/**
* 抽象工廠類
*/public
abstract
class
factory
定義乙個產品a的具體工廠
/**
* 產品a的具體工廠
*/public
class
concretefactorya
extends
factory
}
客戶端測試**
public
class
client
}
反射反射的方式可以更簡潔的生產具體產品物件,只要在工廠方法的引數列表中傳入乙個class類來決定是哪乙個產品類。
具體**如下:
public
abstract
class
factory
具體工廠類:
public
class
concretefactory
extends
factory catch (exception e)
return (t) product;}}
客戶端呼叫**:
public
class
client
}
使用工廠方法模式設計乙個程式來讀取各種不同型別的格式,針對每一種格式都設計乙個讀取器,如gif讀取器用於讀取gif格式的、jpg讀取器用於讀取jpg格式的。需充分考慮系統的靈活性和可擴充套件性。
}抽象工廠類:
public
abstract
class
reade***ctory
public
class
picreade***ctory
extends
reade***ctory catch (exception e)
return (t) reader;}}
客戶端呼叫**:
public
class
client
}
執行結果:
原始碼
設計模式之簡單工廠,工廠方法模式
qt暫時斷了,專案上暫時不用。這段時間回顧以前寫的 不忍直視,現在的也好不 去,索性看看設計模式吧,就當練內功了 啦啦。廢話不說上 c 設計乙個簡單的計算器,只實現加減,其他的暫不考慮,namespace my factory private double dnumbera 0 private do...
工廠設計模式之簡單工廠 工廠方法
1 工廠設計模式的作用 將建立者和呼叫者進行分離 我們經常是建立物件之後再呼叫 2 簡單工廠模式,乙個工廠生產很多物件 最常用 3 工廠方法 在簡單工廠的基礎之上更加細分,分為幾個工廠 1 定義電腦介面,依賴倒置原則,即面向介面程式設計 public inte ce computer 2 定義hp和...
設計模式 簡單工廠 工廠方法 抽象工廠方法模式
簡介 工廠方法模式分為 簡單工廠模式 工廠方法模式 抽象工廠方法模式 簡單工廠模式是屬於建立型模式,又叫做靜態工廠方法 static factory method 模式,但不屬於23種gof設計模式之一。簡單工廠模式是由乙個工廠物件決定建立出哪一種產品類的實 uml圖示例 public class ...