簡單工廠模式、工廠方法模式和抽象工廠模式有何區別?
// 建立Reader物件的工廠
public class ReaderFactory {
public static Reader getReader() throws FileNotFoundException {
File file = new File("aa.txt");
FileReader fileReader = new FileReader(file);
BufferedReader reader = new BufferedReader(fileReader);
return reader;
}
}
public class FileOperateA {
public static void main(String[] args) throws FileNotFoundException {
//-------我有工廠了,還用自己搞嗎?不用了!
//File file = new File("aa.txt");
//FileReader fileReader = new FileReader(file);
//BufferedReader bufferedReader = new BufferedReader(fileReader);
//-------我有工廠了,還用自己搞嗎?不用了!
// 用工廠來建立出物件
Reader reader = ReaderFactory.getReader();
// 讀寫檔案....
}
}
工廠模式就是實現了程式碼的複用,避免我們寫重複的程式碼
簡單工廠模式相當於是一個工廠中有各種產品,建立在一個類中,客戶無需知道具體產品的名稱,只需要知道產品類所對應的引數即可。但是工廠的職責過重,而且當型別過多時不利於系統的擴充套件維護。工廠方法模式相當於在簡單工廠模式的基礎上增加一個抽象工廠,在簡單工廠模式下如果增加一個產品,要修改工廠類,不符合開閉原則。在工廠方法下,只需要增加具體工廠和具體產品即可。抽象工廠,類似於一個集團旗下生產的各種產品的工廠,這些產品是一個產品族。是在工廠方法下的擴充套件。比如一個產品的介面,可以通過直接改變具體工廠的例項來改變產品的介面風格。
工廠方法做的事情就是對工廠進行了分工,但是每次我們new例項還是new的比較多,基本每生成一種水就要來一次
抽象工廠就幫我們解決了這個問題(幫我們建立了一個大的水廠,裡面有建造各種水的方法。同時我要生成新的水,我只需要繼承該抽象方法,把我新生成水的方法寫進去就可以了)
相關文章
- 物件導向和麵向過程的區別
- 042-HTTP協議之方法與狀態碼
- Linux系統CentOS6 7 8更換阿里yum源的方法
- Spark3.0.1各種叢集模式搭建
- Java設計模式-17、直譯器模式-自定義語言的實現
- 教你理解let和var的區別
- (四)Logstash收集、解析日誌方法
- Oracle 中varchar2 和nvarchar2區別
- C# 9.0新特性詳解系列之二:擴充套件方法GetEnumerator支援foreach迴圈
- 同步模式(Synchronous)
- 非同步模式(Asynchronous)
- C#中的虛方法(virtual)例項講解
- IDEA社群版(Community)和付費版(UItimate)的區別
- 遊戲程式設計模式學習:第一章命令模式
- JavaBean重寫Object類中的方法
- 讓面試官心服口服:Thread.sleep、synchronized、LockSupport.park的執行緒阻塞有何區別?
- offset與style區別
- 用最簡單的例子講解js中解決非同步的方法
- 代理模式詳解