抽象工厂模式java_面试官:说一下静态工厂模式,工厂方法模式,抽象工厂的区别吧...
靜態工廠模式
用生活中的場景類比一下這三種模式,假如你想學習Java視頻,你得自己到處去找資料,找資料是一個繁瑣的過程,過一段時間你又想學Python視頻了,你還得去找資料。現在你在學校上學,你想學Java視頻了,你跟老師說,我想學Java視頻了,老師就給了你一套Java視頻,我想學Python視頻了,老師就給了你一套Python視頻,是不是感覺很方便,靜態工廠模式就是將創建具體類的過程交給工廠類來實現
但是這樣做是不符合開閉原則的(對于擴展是開放的,對于修改是關閉的),因為每次增加新的課程就得修改if else語句,可以用反射 傳入類的對象解決
當然還可以用工廠方法模式解決
工廠方法模式
工廠方法模式的實質是定義一個創建對象的接口或抽象類,但讓實現這個接口的類來決定實例化哪個類。工廠方法讓類的實例化推遲到子類中進行。
在工廠模式中,創建對象的過程在一個工廠類中,不符合開閉原則,工廠模式就解決了這個問題,對上面的例子進行改進,每一門課程都創建一個工廠類,當增加新的課程時,只要實現工廠接口或工廠抽象類創建新的工廠類即可,在這個新的工廠類中實例化新的課程
需要哪個對象,用相應的工廠類創建即可
抽象工廠模式
在工廠方法模式中具體工廠負責生產具體的產品,每一個具體工廠對應一種具體產品,工廠方法具有唯一性。但是有時候我們希望一個工廠可以提供多個產品對象,而不是單一的產品對象,如一個電器工廠,它可以生產電視機、電冰箱、空調等多種電器,而不是只生產某一種電器。為了更好地理解抽象工廠模式,我們先引入兩個概念
(1) 產品等級結構:產品等級結構即產品的繼承結構,如一個抽象類是電冰箱,其子類有海爾電冰箱、長虹電冰箱、則電冰箱與具體品牌的電冰箱之間構成了一個產品等級結構,抽象電冰箱是父類,而具體品牌的電冰箱是其子類。
(2) 產品族:在抽象工廠模式中,產品族是指由同一個工廠生產的,位于不同產品等級結構中的一組產品,如海爾電器工廠生產的海爾電視機、海爾電冰箱,海爾電視機位于電視機產品等級結構中,海爾電冰箱位于電冰箱產品等級結構中,海爾電視機、海爾電冰箱構成了一個產品族。
在上面的例子中,假如我們除了想學習Java視頻,還想學習Java筆記,如果對每個產品都創建工廠,會造成類爆炸。這時就可以生成一個Java課程抽象工廠,提供Java這個產品族的對象
抽象工廠模式與工廠方法模式最大的區別在于,工廠方法模式針對的是一個產品等級結構,而抽象工廠模式需要面對多個產品等級結構,一個工廠等級結構可以負責多個不同產品等級結構中的產品對象的創建。當一個工廠等級結構可以創建出分屬于不同產品等級結構的一個產品族中的所有對象時,抽象工廠模式比工廠方法模式更為簡單、更有效率
總結
以上是生活随笔為你收集整理的抽象工厂模式java_面试官:说一下静态工厂模式,工厂方法模式,抽象工厂的区别吧...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python正则_Python基础12之
- 下一篇: 学生电脑哪个牌子好_柳州304不锈钢学生