Java工厂设计模式
本文讨论了Java中的工厂设计模式,它是Java中常用的设计模式之一。
Java是一种非常强大的语言。通过面向对象编程的简单性创造了更多的可靠性和安全性,这是每个人都喜欢它的一些主要原因。
工厂设计模式在Java中得到了广泛的应用,考虑到它的用途,它得到了广泛的应用。这种设计模式的方法也称为虚拟构造函数。
当我们在Java中创建对象时,我们可能不知道我们可能需要什么类型的对象以及其中实现它们。工厂设计模式正好解决了这个问题。通过理解设计模式本身的名称,我们可以更好地理解它。考虑一个每天生产不同产品的工厂环境。库存包含了制造产品所需的所有材料,但生产的产品类型目前还不清楚。
在编程方面,我们可以将列表中的组件作为类进行比较,但是我们将不知道在运行时实例化哪些组件(要制造什么产品)。
术语factory的出现是因为设计模式生成了许多不同类型的对象,而不必知道创建了什么类型的对象以及它们是如何创建的。当我们有一个超类和各种子类时,它就被使用了。
工厂设计模式被认为是一种创造性的设计模式,部署在JDK和Spring、Struts等框架中。
为什么使用工厂设计模式?
允许子类选择要在运行时期间创建的对象类型
促进松耦合,因为它消除了将特定于应用程序的类绑定到代码中的需要
何时使用工厂设计模式?
当你不知道你的类需要什么子类的时候
当我们希望子类指定要生成的对象时
超级类充当公共接口或者抽象类来创建对象,但让子类决定在运行时实例化哪个类。所以我们可以说,子类负责创建类的实例。
Java工厂设计模式范例
让我们看一个工厂设计模式是如何通过一个真实的例子来实现的,并对其进行编码。
工厂设计模式示例
步骤1:创建一个名为Courses的抽象类
abstract class Courses{
protected int duration;
protected double fee;
abstract void getDuration();
abstract void getFeePerSemester();
public void calculateTotalFee(){
System.out.println(duration*fee);
}
}//end of Course class
第2步:创建扩展程序抽象类的类,这里提供计算机、公共服务和卫生三门程序
class Computer extends Courses{
//@override
public void getDuration(){
duration=8; //duration in semesters
}
public void getFeePerSemester(){
fee = 3000; //fee in dollars
}
}//end of Computer class.
class CivilServices extends Courses{
//@override
public void getDuration(){
duration=6; //duration in semesters
}
public void getFeePerSemester(){
fee = 2000; //fee in dollars
}
}//end of CivilServices class.
class Health extends Courses{
//@override
public void getDuration(){
duration=10; //duration in semesters
}
public void getFeePerSemester(){
fee = 5000; //fee in dollars
}
}//end of Health class.
第三步:创建准入类,生成子类的对象
class Admission{
//use admittingCourse method to get object of type Course
public Course admittingCourse (String courseName){
if(courseName == null){
return null;
}
if(courseName.equalsIgnoreCase("Computer")) {
return new Computer();
}
else if(courseName.equalsIgnoreCase("CivilServices")){
return new CivilServices();
}
else if(courseName.equalsIgnoreCase("Health")) {
return new Health();
}
return null;
}
}//end of Admission class.
第四步:通过申请的程序,即计算机、公共服务、卫生等所需信息,利用招生类获取子类的对象,生成程序的学时和费用信息。
import java.io.*;
class CourseInformation {
public static void main(String args[]) throws IOException {
Admission newApplication = new Admission();
System.out.print("Enter the course you are trying to admit in: ");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String cousreName = br.readLine();
Course c = newApplication.admittingCourse(courseName);
System.out.print("For " + courseName + " the required duration you would have to study is: ");
c.getDuration();
System.out.print("For " + courseName + " the required fee you would have to pay per semester is: ");
c.getFeePerSemester();
System.out.print("The total amount you will have to pay for the entire course duration is:");
c.calculateTotalFee();
}
} //end of CourseInformation class.
这是一个用Java编写的工厂设计模式的实际应用程序的源代码。现在我们知道什么是工厂设计模式,何时应该使用它,以及使用它的优势是什么。

