簡單工廠模式:
這個模式本身很簡單而且使用在業(yè)務較簡單的情況下。一般用于小項目或者具體產品很少擴展的情況(這樣工廠類才不用經常更改)。
它由三種角色組成:
工廠類角色:這是本模式的核心,含有一定的商業(yè)邏輯和判斷邏輯,根據邏輯不同,產生具體的工廠產品。如例子中的Driver類。
抽象產品角色:它一般是具體產品繼承的父類或者實現的接口。由接口或者抽象類來實現。如例中的Car接口。
具體產品角色:工廠類所創(chuàng)建的對象就是此角色的實例。在java中由一個具體類實現,如例子中的Benz、Bmw類。
簡單工廠模式優(yōu)缺點
1、優(yōu)點:
工廠類含有必要的判斷邏輯,可以決定在什么時候創(chuàng)建哪一個產品類的實例,客戶端可以免除直接創(chuàng)建產品對象的責任,而僅僅”消費”產品。簡單工廠模式通過這種做法實現了對責任的分割。
當產品有復雜的多層等級結構時,工廠類只有自己,以不變應萬變,就是模式的缺點。因為工廠類集中了所有產品創(chuàng)建邏輯,一旦不能正常工作,整個系統(tǒng)都要受到影響。
2、缺點:
系統(tǒng)擴展困難,一旦添加新產品就不得不修改工廠邏輯,有可能造成工廠邏輯過于復雜,違背了”開放–封閉”原則(OCP)。另外,簡單工廠模式通常使用靜態(tài)工廠方法,這使得無法由子類繼承,造成工廠角色無法形成基于繼承的等級結構。
抽象工廠模式:
可以這么說,它和工廠方法模式的區(qū)別就在于需要創(chuàng)建對象的復雜程度上。而且抽象工廠模式是三個里面最為抽象、最具一般性的。抽象工廠模式的用意為:給客戶端提供一個接口,可以創(chuàng)建多個產品族中的產品對象。
而且使用抽象工廠模式還要滿足一下條件:
系統(tǒng)中有多個產品族,而系統(tǒng)一次只可能消費其中一族產品
同屬于同一個產品族的產品以其使用。
來看看抽象工廠模式的各個角色(和工廠方法的如出一轍):
抽象工廠角色: 這是工廠方法模式的核心,它與應用程序無關。是具體工廠角色必須實現的接口或者必須繼承的父類。在java中它由抽象類或者接口來實現。
具體工廠角色:它含有和具體業(yè)務邏輯有關的代碼。由應用程序調用以創(chuàng)建對應的具體產品的對象。在java中它由具體的類來實現。
抽象產品角色:它是具體產品繼承的父類或者是實現的接口。在java中一般有抽象類或者接口來實現。
具體產品角色:具體工廠角色所創(chuàng)建的對象就是此角色的實例。在java中由具體的類來實現。
了解更多java培訓相關面試就業(yè)問題歡迎關注小編!
本文鏈接:
本文章“簡單工廠和抽象工廠有什么區(qū)別”已幫助 184 人
免責聲明:本信息由用戶發(fā)布,本站不承擔本信息引起的任何交易及知識產權侵權的法律責任!
本文由賦能網 整理發(fā)布。了解更多培訓機構》培訓課程》學習資訊》課程優(yōu)惠》課程開班》學校地址等機構信息,可以留下您的聯系方式,讓課程老師跟你詳細解答:
咨詢熱線:4008-569-579