在工廠模式(factory pattern)中,我們在建立物件時不會對客戶端暴露建立邏輯,並且是通過使用乙個共同的介面來指向新建立的物件。
意圖:定義乙個建立物件的介面,讓其子類自己決定例項化哪乙個工廠類,工廠模式使其建立過程延遲到子類進行。
解決型別:主要解決介面選擇的問題。
關鍵**:建立過程在其子類執行。
應用例項:您需要一輛汽車,可以直接從工廠裡面提貨,而不用去管這輛汽車是怎麼做出來的,以及這個汽車裡面的具體實現。
優點:
1、乙個呼叫者想建立乙個物件,只要知道其名稱就可以了。
2、擴充套件性高,如果想增加乙個產品,只要擴充套件乙個工廠類就可以。
3、遮蔽產品的具體實現,呼叫者只關心產品的介面。
缺點
每次增加乙個產品時,都需要增加乙個具體類和物件實現工廠,使得系統中類的個數成倍增加,在一定程度上增加了系統的複雜度,同時也增加了系統具體類的依賴。這並不是什麼好事。
使用場景
1、日誌記錄器:記錄可能記錄到本地硬碟、系統事件、遠端伺服器等,使用者可以選擇記錄日誌到什麼地方。
2、資料庫訪問,當使用者不知道最後系統採用哪一類資料庫,以及資料庫可能有變化時。
3、設計乙個連線伺服器的框架,需要三個協議,"pop3"、"imap"、"http",可以把這三個作為產品類,共同實現乙個介面。
關係圖
例項
//傳送介面
public
inte***ce
sender
//實現介面
public
class
mailsender
implements
sender
}//實現介面
public
class
smssender
implements
sender
}public
class
sendfactory else
if (type.equalsignorecase("smssender")) else
}}@test
public
void
test()
public
class
sendfactory
public sender producesms()
}@test
public
void
test()
public
class
sendfactory
public
static sender producesms()
}@test
public
void
test()
設計模式學習之簡單工廠模式和工廠模式
1 兩者之間的共同 都是建立shape介面,然後分別建立circle rectangle square這三個類,實現shape介面方法即可。不同之處在建立工廠類上。簡單工廠 只建立乙個工廠類 packagecn.zyy.design.mode.factory public class factory...
二 設計模式 工廠模式
一.傳統時以pizza類舉例,乙個抽象類pizza,由幾個pizza實現類實現,主餐廳看看客戶點什麼便生產,但是如果需要增加新的pizza品種,則要增加乙個新的實現類,然後主餐廳裡增加對邏輯的判斷,顯然,違背了開放關閉原則。所以 工廠模式為解決某些需要生產大量一批類的問題 二.簡單工廠模式 定義了乙...
設計模式(二)工廠模式
與 模式不同,生產模式隱藏過程,只關注結果 簡單工廠,工廠方法,抽象工廠 一,簡單工廠模式 public inte ce car public class aodi implements car public class baoma implements car public class facto...