在前面的部落格簡單工廠模式和策略模式的應用的前半部分,提到過簡單工廠模式,我們知道,簡單工廠模式的主要優點在於封裝了物件的建立過程,很大程度上實現了低耦合,但是,我們也能清晰的看到,當需要擴充套件新的功能時,我們不得不修改工廠類,這種做法實則違反了「開放--封閉」原則 。為了解決這一問題,我們引入工廠方法模式。
工廠方法模式:定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類,工廠方法類使得乙個類的例項化物件延遲到其子類。
由上述結構我們可以看出工廠方法類是將工廠類中例項化物件的過程轉移到其子類,這樣做,在有效的封裝了物件的建立過程的基礎上,也符合了「開放--封閉」原則。
如下:
inte***ce fruit
inte***ce factory
/* * 以下類均實現了具體類的介面
*/ public void result( ) }
class orange implements fruit
}class banana implements fruit}/*
* 以下的類實現了工廠介面
*/ public fruit getfruit()
}class orangefactory implements factory
}class bananafactory implements factory
}public class factoryfunction
}
雖然工廠方法模式符合了「開放--封閉原則」,但是也因此增大了開發量,之後,我們會介紹應用反射技術的工廠模式。 簡單工廠模式和工廠方法模式
簡單工廠模式又稱靜態工廠模式 簡單工廠模式的實質 乙個工廠類根據傳入的引數,動態決定應該建立哪一類產品類 這些產品類均繼承自乙個父類或介面 例項。比如使用者買車,要先去4s店就看車,4s店又要從車廠進貨。傳統方式 public inte ce carpublic class maserati imp...
工廠模式 簡單工廠和工廠方法
核心概念 實現了建立者和呼叫者分離 詳細分類 簡單 靜態工廠模式 工廠方法模式 抽象工廠模式 1.靜態工廠模式 public class ca ctory else if car.equals 特斯拉 else 方法2 每增加乙個類都要修改 不利於復用和維護 2.工廠方法模式 每個類分別實現ca c...
簡單工廠模式 工廠方法模式
在實際應用中,我們可以考慮使用封裝 繼承 多型把程式的耦合度降低。1.簡單工廠模式 例子 寫乙個計算器模擬程式 思路 將業務進行封裝,並且進行松耦合,即不同的運算類之間互相不影響,可考慮通過繼承乙個類或者實現乙個介面 類operation,定義計算的統一介面 package smplefactory...