導航:首頁 > 解決方法 > 簡單工廠方法

簡單工廠方法

發布時間:2022-08-07 04:04:12

『壹』 簡單工廠模式與工廠方法模式的相同點和不同點

建議LZ把簡單工廠,工廠方法和抽象工廠一起研究下,呵呵,前一段我老師讓我研究下這3種模式的不同,一起學習可能更明白了。
簡單工廠模式又稱靜態工廠方法模式。重命名上就可以看出這個模式一定很簡單。它存在的目的很簡單:定義一個用於創建對象的介面。
先來看看它的組成:
1)工廠類角色:這是本模式的核心,含有一定的商業邏輯和判斷邏輯。在java中它往往由一個具體類實現。
2)抽象產品角色:它一般是具體產品繼承的父類或者實現的介面。在java中由介面或者抽象類來實現。
3)具體產品角色:工廠類所創建的對象就是此角色的實例。在java中由一個具體類實現。
工廠方法模式去掉了簡單工廠模式中工廠方法的靜態屬性,使得它可以被子類繼承。這樣在簡單工廠模式里集中在工廠方法上的壓力可以由工廠方法模式里不同的工廠子類來分擔。
看下它的組成:
1)抽象工廠角色: 這是工廠方法模式的核心,它與應用程序無關。是具體工廠角色必須實現的介面或者必須繼承的父類。在java中它由抽象類或者介面來實現。
2) 具體工廠角色:它含有和具體業務邏輯有關的代碼。由應用程序調用以創建對應的具體產品的對象。
3)抽象產品角色:它是具體產品繼承的父類或者是實現的介面。在java中一般有抽象類或者介面來實現。
4)具體產品角色:具體工廠角色所創建的對象就是此角色的實例。在java中由具體的類來實現。

『貳』 簡單工廠和工廠方法的區別是什麼

自己管理自己--簡單工廠;
通過一個頂級工廠介面或抽象類(一般為介面),管理具體工廠類--工廠方法;

簡單工廠不需要頂級類型,自己構造自己,通常為擁有一個私有構造方法和一個能夠向外界提供自己實例的靜態方法.單例模式和多例模式都是簡單工廠的特例.

工廠方法,擁有一個頂級工廠介面,每個具體工廠管理自己的產品,通過頂級工廠借口向外界提供工廠的實例.工廠方法使用時應該注意,工廠的繼承結構要與產品的繼承結構相同.

『叄』 簡單工廠模式,工廠方法模式和抽象工廠模式有何區別

工廠方法模式:
一個抽象產品類,可以派生出多個具體產品類。
一個抽象工廠類,可以派生出多個具體工廠類。
每個具體工廠類只能創建一個具體產品類的實例。

抽象工廠模式:
多個抽象產品類,每個抽象產品類可以派生出多個具體產品類。
一個抽象工廠類,可以派生出多個具體工廠類。
每個具體工廠類可以創建多個具體產品類的實例。

區別:
工廠方法模式只有一個抽象產品類,而抽象工廠模式有多個。
工廠方法模式的具體工廠類只能創建一個具體產品類的實例,而抽象工廠模式可以創建多個。

『肆』 工廠模式,簡單工廠模式,抽象工廠模式三者有什麼區別

工廠模式,簡單工廠模式,抽象工廠模式三者區別如下:

1、首先,三者的創建對象是不相同的。

進行創建對象時,「工廠模式」不使用new創建對象,而是使用Factory模式;「簡單工廠模式」則是通過fw模式來建立對象;「抽象工廠模式」使用迭代模式來創建對象。

(4)簡單工廠方法擴展閱讀:

簡單工廠模式優缺點

1、優點:
工廠類含有必要的判斷邏輯,可以決定在什麼時候創建哪一個產品類的實例,客戶端可以免除直接創建產品對象的責任,而僅僅"消費"產品。簡單工廠模式通過這種做法實現了對責任的分割。

當產品有復雜的多層等級結構時,工廠類只有自己,以不變應萬變,就是模式的缺點。因為工廠類集中了所有產品創建邏輯,一旦不能正常工作,整個系統都要受到影響。

2、缺點:
系統擴展困難,一旦添加新產品就不得不修改工廠邏輯,有可能造成工廠邏輯過於復雜,違背了"開放--封閉"原則(OCP)。另外,簡單工廠模式通常使用靜態工廠方法,這使得無法由子類繼承,造成工廠角色無法形成基於繼承的等級結構。

『伍』 java簡單工廠模式是什麼

簡單工廠模式的:簡單工廠模式是類的創建模式,又叫做靜態工廠方法(Static Factory Method)模式。簡單工廠模式是由一個工廠對象決定創建出哪一種產品類的實例。
那麼簡單工廠模式是在什麼場景下使用呢,下面就以本人的理解舉例說明:

就拿登錄功能來說,假如應用系統需要支持多種登錄方式如:口令認證、域認證(口令認證通常是去資料庫中驗證用戶,而域認證則是需要到微軟的域中驗證用戶)。那麼自然的做法就是建立一個各種登錄方式都適用的介面,如下圖所示:

public interface Login {
//登錄驗證
public boolean verify(String name , String password);
}

public class DomainLogin implements Login {

@Override
public boolean verify(String name, String password) {
// TODO Auto-generated method stub
/**
* 業務邏輯
*/
return true;
}

}

public class PasswordLogin implements Login {

@Override
public boolean verify(String name, String password) {
// TODO Auto-generated method stub
/**
* 業務邏輯
*/
return true;
}

}

我們還需要一個工廠類LoginManager,根據調用者不同的要求,創建出不同的登錄對象並返回。而如果碰到不合法的要求,會返回一個Runtime異常。

public class LoginManager {
public static Login factory(String type){
if(type.equals("password")){

return new PasswordLogin();

}else if(type.equals("passcode")){

return new DomainLogin();

}else{
/**
* 這里拋出一個自定義異常會更恰當
*/
throw new RuntimeException("沒有找到登錄類型");
}
}
}

測試類:

public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
String loginType = "password";
String name = "name";
String password = "password";
Login login = LoginManager.factory(loginType);
boolean bool = login.verify(name, password);
if (bool) {
/**
* 業務邏輯
*/
} else {
/**
* 業務邏輯
*/
}
}
}

簡單工廠模式的結構如下圖:

我們可以設想一下真實的場景,如果把上面的Test當做一個servlet的話,當客戶端發起登錄請求——>請求交給服務端的Servlet——>Servlet根據客戶端傳遞的loginType調用工廠類LoginManager的factory()方法——>factory()方法根據參數loginType創建相應的登錄驗證類(DomainLogin或PasswordLogin)並返回——>登錄驗證類調用方法verify()驗證用戶名密碼是否正確

假如不使用簡單工廠模式則驗證登錄Servlet代碼如下(假設Test為一個Servlet,變數loginType、name、password表示從客戶端傳遞過來的參數):

public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub

String loginType = "password";
String name = "name";
String password = "password";
//處理口令認證
if(loginType.equals("password")){
PasswordLogin passwordLogin = new PasswordLogin();
boolean bool = passwordLogin.verify(name, password);
if (bool) {
/**
* 業務邏輯
*/
} else {
/**
* 業務邏輯
*/
}
}
//處理域認證
else if(loginType.equals("passcode")){
DomainLogin domainLogin = new DomainLogin();
boolean bool = domainLogin.verify(name, password);
if (bool) {
/**
* 業務邏輯
*/
} else {
/**
* 業務邏輯
*/
}
}else{
/**
* 業務邏輯
*/
}
}
}

上面的代碼會不會很蛋疼啊。。。呵呵

《JAVA與模式》一書中使用java.text.DataFormat類作為簡單工廠模式的典型例子敘述。

簡單工廠模式的優點

模式的核心是工廠類。這個類含有必要的邏輯判斷,可以決定在什麼時候創建哪一個登錄驗證類的實例,而調用者則可以免除直接創建對象的責任。簡單工廠模式通過這種做法實現了對責任的分割,當系統引入新的登錄方式的時候無需修改調用者。

簡單工廠模式的缺點

這個工廠類集中了所以的創建邏輯,當有復雜的多層次等級結構時,所有的業務邏輯都在這個工廠類中實現。什麼時候它不能工作了,整個系統都會受到影響。

『陸』 簡單工廠模式是什麼

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

『柒』 工廠方法模式的模式簡介

工廠方法(Factory Method)模式的意義是定義一個創建產品對象的工廠介面,將實際創建工作推遲到子類當中。核心工廠類不再負責產品的創建,這樣核心類成為一個抽象工廠角色,僅負責具體工廠子類必須實現的介面,這樣進一步抽象化的好處是使得工廠方法模式可以使系統在不修改具體工廠角色的情況下引進新的產品。
工廠方法模式是簡單工廠模式的衍生,解決了許多簡單工廠模式的問題。首先完全實現『開-閉 原則』,實現了可擴展。其次更復雜的層次結構,可以應用於產品結果復雜的場合。
工廠方法模式對簡單工廠模式進行了抽象。有一個抽象的Factory類(可以是抽象類和介面),這個類將不再負責具體的產品生產,而是只制定一些規范,具體的生產工作由其子類去完成。在這個模式中,工廠類和產品類往往可以依次對應。即一個抽象工廠對應一個抽象產品,一個具體工廠對應一個具體產品,這個具體的工廠就負責生產對應的產品。
工廠方法模式(Factory Method pattern)是最典型的模板方法模式(Template Method pattern)應用。

『捌』 簡單工廠和抽象工廠的區別

簡單工廠 : 用來生產同一等級結構中的任意產品。(對於增加新的產品,無能為力)
工廠方法 :用來生產同一等級結構中的固定產品。(支持增加任意產品)
抽象工廠 :用來生產不同產品族的全部產品。(對於增加新的產品,無能為力;支持增加產品族)
以上三種工廠方法在等級結構和產品族這兩個方向上的支持程度不同。所以要根據情況考慮應該使用哪種方法。

閱讀全文

與簡單工廠方法相關的資料

熱點內容
廁所臭怎麼辦最有效方法 瀏覽:421
檢測m1和m3基因簇的檢測方法 瀏覽:601
720除45的簡便運算方法 瀏覽:575
如何用化學方法鑒別松節油甲苯 瀏覽:604
如何支持地方法人銀行補充資本 瀏覽:763
公園跑步鍛煉方法 瀏覽:133
軟體技術可行性分析的方法 瀏覽:528
常用化學固液分離方法 瀏覽:989
員工福利工資計算方法 瀏覽:959
小黑板三腳架安裝方法 瀏覽:707
草木灰的正確使用方法 瀏覽:598
手指鍛煉正確方法 瀏覽:933
念珠菌的治療方法女 瀏覽:394
日本藝妓面膜使用方法 瀏覽:118
滑行盤使用方法視頻教學 瀏覽:943
產婦出虛汗用什麼方法治療 瀏覽:617
賓士電機異響解決方法 瀏覽:675
屬於幼兒教育的什麼方法 瀏覽:481
快速進入主頁方法 瀏覽:909
孩子有什麼方法驅邪 瀏覽:701