1. 程式人生 > >Java中的工廠設計模式

Java中的工廠設計模式

 

Java中的工廠設計模式

 

歡迎到工廠設計模式Java教程Factory PatternCreational Design模式之一,它在JDK以及Spring和Struts等框架中得到廣泛應用。

目錄[ 隱藏 ]

 

工廠設計模式

工廠設計模式,工廠設計模式在java,工廠模式,工廠方法模式,工廠模式的例子

當我們有一個具有多個子類的超類並且基於輸入時,使用工廠設計模式,我們需要返回其中一個子類。此模式負責將類從客戶端程式例項化到工廠類。

讓我們首先學習如何在java中實現工廠設計模式,然後我們將研究工廠模式的優勢。我們將在JDK中看到一些工廠設計模式的使用。請注意,此模式也稱為工廠方法設計模式

 

工廠設計模式超類

工廠設計模式中的超類可以是介面,抽象類或普通的java類。對於我們的工廠設計模式示例,我們使用帶有重寫toString()方法的抽象超類來進行測試。


package com.journaldev.design.model;

public
abstract class Computer { public abstract String getRAM(); public abstract String getHDD(); public abstract String getCPU(); @Override public String toString(){ return "RAM= "+this.getRAM()+", HDD="+this.getHDD()+", CPU="+this.getCPU(); } }

工廠設計模式子類

假設我們有兩個子類PC和Server,具有以下實現。


package
com.journaldev.design.model; public class PC extends Computer { private String ram; private String hdd; private String cpu; public PC(String ram, String hdd, String cpu){ this.ram=ram; this.hdd=hdd; this.cpu=cpu; } @Override public String getRAM() { return this.ram; } @Override public String getHDD() { return this.hdd; } @Override public String getCPU() { return this.cpu; } }

請注意,這兩個類都在擴充套件Computer超類。


package com.journaldev.design.model;

public class Server extends Computer {

	private String ram;
	private String hdd;
	private String cpu;
	
	public Server(String ram, String hdd, String cpu){
		this.ram=ram;
		this.hdd=hdd;
		this.cpu=cpu;
	}
	@Override
	public String getRAM() {
		return this.ram;
	}

	@Override
	public String getHDD() {
		return this.hdd;
	}

	@Override
	public String getCPU() {
		return this.cpu;
	}

}

工廠類

現在我們已經準備好了超級類和子類,我們可以編寫工廠類。這是基本的實現。


package com.journaldev.design.factory;

import com.journaldev.design.model.Computer;
import com.journaldev.design.model.PC;
import com.journaldev.design.model.Server;

public class ComputerFactory {

	public static Computer getComputer(String type, String ram, String hdd, String cpu){
		if("PC".equalsIgnoreCase(type)) return new PC(ram, hdd, cpu);
		else if("Server".equalsIgnoreCase(type)) return new Server(ram, hdd, cpu);
		
		return null;
	}
}

關於工廠設計模式方法的一些要點是;

  1. 我們可以保留Factory類Singleton,或者我們可以保留將子類作為static返回的方法。
  2. 請注意,基於輸入引數,將建立並返回不同的子類。getComputer是工廠方法。

這是一個簡單的測試客戶端程式,它使用上面的工廠設計模式實現。


package com.journaldev.design.test;

import com.journaldev.design.factory.ComputerFactory;
import com.journaldev.design.model.Computer;

public class TestFactory {

	public static void main(String[] args) {
		Computer pc = ComputerFactory.getComputer("pc","2 GB","500 GB","2.4 GHz");
		Computer server = ComputerFactory.getComputer("server","16 GB","1 TB","2.9 GHz");
		System.out.println("Factory PC Config::"+pc);
		System.out.println("Factory Server Config::"+server);
	}

}

上述計劃的輸出是:


Factory PC Config::RAM= 2 GB, HDD=500 GB, CPU=2.4 GHz
Factory Server Config::RAM= 16 GB, HDD=1 TB, CPU=2.9 GHz

 

工廠設計模式的優點

  1. 工廠設計模式提供了介面而不是實現的程式碼方法。
  2. 工廠模式從客戶端程式碼中刪除實際實現類的例項化。工廠模式使我們的程式碼更健壯,耦合更少,易於擴充套件。例如,我們可以輕鬆更改PC類實現,因為客戶端程式不知道這一點。
  3. 工廠模式通過繼承提供實現和客戶端類之間的抽象。

 

JDK中的工廠設計模式示例

  1. java.util.Calendar,ResourceBundle和NumberFormat getInstance()方法使用Factory模式。
  2. valueOf() 包裝類中的方法,如Boolean,Integer等。

 

工廠設計模式YouTube視訊教程

我最近在YouTube上釋出了一個關於工廠設計模式的視訊,請檢視。請喜歡並分享視訊並訂閱我的YouTube頻道。

 

轉載來源:https://www.journaldev.com/1392/factory-design-pattern-in-java