您好,登錄后才能下訂單哦!
這篇文章主要講解了“怎么理解Java設計模式的抽象工廠模式”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“怎么理解Java設計模式的抽象工廠模式”吧!
為創建一組相關或相互依賴的對象提供一個接口,而且無需指定他們的具體類。
抽象工廠模式是所有形態的工廠模式中最為抽象和最具一般性的一種形態。抽象工廠模式是指當有多個抽象角色時,使用的一種工廠模式。
抽象工廠模式可以向客戶端提供一個接口,使客戶端在不必指定產品的具體的情況下,創建多個產品族中的產品對象。
根據里氏替換原則,任何接受父類型的地方,都應當能夠接受子類型。因此,實際上系統所需要的,僅僅是類型與這些抽象產品角色相同的一些實例,而不是這些抽象產品的實例。
換言之,也就是這些抽象產品的具體子類的實例。工廠類負責創建抽象產品的具體子類的實例。
當一個對象都有相同的約束時,可以使用抽象工廠模式。
打個比方說,這個工廠的幾個產品都需要經過某些共同的步驟和打上相同的商標,這一組產品可以在一個工廠里面生產,減少很多重復的代碼在不同的地方都出現多次。
抽象工廠模式的定義:為創建一組相關或相互依賴的對象提供一個接口,而且無需指定它們的具體類。
工廠方法模式的定義:為某個對象提供一個接口,而且無需指定它們的具體類。
都是子類實現接口的方法,并在子類寫具體的代碼。
工廠方法模式中也是可以有多個具體工廠,也是可以有多個抽象產品,和多個具體工廠、具體產品類。
區別是在抽象工廠接口類中,能創建幾個產品對象。
抽象工廠模式的工廠能創建多個相關的產品對象,而工廠方法模式的工廠只創建一個產品對象。
優點:
1.它分離了具體的類
2.它使得易于交換產品系列
3.它有利于產品的一致性
缺點:
難以支持新種類的產品。
抽象方法模式的最大缺點就是產品族本身的擴展非常困難。如果在產品族中增加一個新的產品類型,則需要修改多個接口,并影響現已有的工廠類。
上面這句話,有些人不怎么理解,我給大家解釋一下,打個比方說,你要在這個工廠創建三個對象,原本只是創建兩個對象的,那么你就要在抽象方法中添加一個創建對象的方法,那么所有實現了這個接口的類都是要重新添加這個創建對象的方法,這就是對之前的工廠有影響的原因。
首先是抽象工廠,生產對象的抽象。
public abstract class AbstractFactory { abstract Size getSize(); }
下面是具體工廠
public class IphoneXFactory: AbstractFactory{ Size getSize() { return new IphoneXSize(); } } public class IphoneXRFactory: AbstractFactory{ Size getSize() { return new IphoneXRSize(); } } public class HuaWeiMate10Factory: AbstractFactory{ Size getSize() { return new HuaWeiMate10Size(); } } public class XiaoMi8Factory: AbstractFactory{ Size getSize() { return new XiaoMi8Size(); } }
下面是對象抽象出來的接口
public interface Size { public void getSize(); }
最后是我們要生產的對象
public class IphoneXSize: Size { public void getSize() { System.out.println("IphoneX尺寸."); } } public class IphoneXRSize: Size { public void getSize() { System.out.println("IphoneXR尺寸."); } } public class HuaWeiMate10Size: Size { public void getSize() { System.out.println("HuaWeiMate10尺寸."); } } public class XiaoMi8Size: Size { public void getSize() { System.out.println("小米8尺寸."); } }
客戶端調用
public class Test { public static void main(String args[]){ AbstractFactory factory = new IphoneXFactory(); factory.getSize(); } }
感謝各位的閱讀,以上就是“怎么理解Java設計模式的抽象工廠模式”的內容了,經過本文的學習后,相信大家對怎么理解Java設計模式的抽象工廠模式這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。