Java 中的工厂设计模式

欢迎学习Java中的工厂设计模式教程。工厂模式 是** 创意设计模式** 的一种,它在JDK以及Spring、Struts等框架中得到了广泛的应用。

工厂设计模式

工厂设计模式,Java中的工厂设计模式,工厂模式,工厂方法模式,工厂模式example当我们有一个具有多个子类的超类,并且需要根据输入返回其中一个子类时,使用工厂设计模式。此模式将类的实例化责任从客户端程序转移到工厂类。让我们首先学习如何在Java中实现工厂设计模式,然后我们将研究工厂模式的优势。我们将看到一些工厂设计模式在JDK中的使用。请注意,此模式也称为工厂方法设计模式

工厂设计模式超类

工厂设计模式中的超类可以是一个接口,Abstract class 或者一个普通的Java类。对于我们的工厂设计模式示例,我们有一个带有overriddentoString()方法用于测试目的。

 1package com.journaldev.design.model;
 2
 3public abstract class Computer {
 4    
 5    public abstract String getRAM();
 6    public abstract String getHDD();
 7    public abstract String getCPU();
 8    
 9    @Override
10    public String toString(){
11    	return "RAM= "+this.getRAM()+", HDD="+this.getHDD()+", CPU="+this.getCPU();
12    }
13}

工厂设计模式子类

假设我们有两个子类PC和Server,实现如下。

 1package com.journaldev.design.model;
 2
 3public class PC extends Computer {
 4
 5    private String ram;
 6    private String hdd;
 7    private String cpu;
 8    
 9    public PC(String ram, String hdd, String cpu){
10    	this.ram=ram;
11    	this.hdd=hdd;
12    	this.cpu=cpu;
13    }
14    @Override
15    public String getRAM() {
16    	return this.ram;
17    }
18
19    @Override
20    public String getHDD() {
21    	return this.hdd;
22    }
23
24    @Override
25    public String getCPU() {
26    	return this.cpu;
27    }
28
29}

请注意,这两个类都扩展了Computer超类。

 1package com.journaldev.design.model;
 2
 3public class Server extends Computer {
 4
 5    private String ram;
 6    private String hdd;
 7    private String cpu;
 8    
 9    public Server(String ram, String hdd, String cpu){
10    	this.ram=ram;
11    	this.hdd=hdd;
12    	this.cpu=cpu;
13    }
14    @Override
15    public String getRAM() {
16    	return this.ram;
17    }
18
19    @Override
20    public String getHDD() {
21    	return this.hdd;
22    }
23
24    @Override
25    public String getCPU() {
26    	return this.cpu;
27    }
28
29}

工厂类

现在我们已经准备好了超类和子类,我们可以编写我们的工厂类了。以下是基本实现。

 1package com.journaldev.design.factory;
 2
 3import com.journaldev.design.model.Computer;
 4import com.journaldev.design.model.PC;
 5import com.journaldev.design.model.Server;
 6
 7public class ComputerFactory {
 8
 9    public static Computer getComputer(String type, String ram, String hdd, String cpu){
10    	if("PC".equalsIgnoreCase(type)) return new PC(ram, hdd, cpu);
11    	else if("Server".equalsIgnoreCase(type)) return new Server(ram, hdd, cpu);
12    	
13    	return null;
14    }
15}

关于工厂设计模式方法的几个要点是;

1.我们可以保留工厂类Singleton,也可以将返回子类的方法保留为static。 2.请注意,根据输入参数,创建并返回不同的子类。getComputer为工厂方法。

工厂模式Java,工厂模式,工厂设计模式,工厂模式类diagram这里是一个简单的测试客户端程序,使用以上工厂设计模式实现。

 1package com.journaldev.design.test;
 2
 3import com.journaldev.design.factory.ComputerFactory;
 4import com.journaldev.design.model.Computer;
 5
 6public class TestFactory {
 7
 8    public static void main(String[] args) {
 9    	Computer pc = ComputerFactory.getComputer("pc","2 GB","500 GB","2.4 GHz");
10    	Computer server = ComputerFactory.getComputer("server","16 GB","1 TB","2.9 GHz");
11    	System.out.println("Factory PC Config::"+pc);
12    	System.out.println("Factory Server Config::"+server);
13    }
14
15}

上述程序的输出为:

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

工厂设计模式优势

1.工厂设计模式提供了接口代码而不是实现代码的方法。 2.工厂模式从客户端代码中移除了实际实现类的实例化。工厂模式使我们的代码更健壮、更少耦合和更容易扩展。例如,我们可以很容易地更改PC类实现,因为客户端程序不知道这一点。 3.工厂模式通过继承提供实现和客户端类之间的抽象。

JDK中的工厂设计模式示例

1.java.util.Calendar、ResourceBundle和NumberFormatgetInstance()方法使用Factory模式。 2.Boolean、Integer等包装类中的valueOf()方法。

工厂设计模式YouTube视频教程

我最近在YouTube上上传了一段关于工厂设计模式的视频,请查看。请点赞并分享视频,订阅我的YouTube频道。Https://www.youtube.com/watch?v=J1QU_R4MQQc

您可以从我的giHub Project.]下载示例代码

Published At
Categories with 技术
comments powered by Disqus