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编写的工厂设计模式的实际应用程序的源代码。现在我们知道什么是工厂设计模式,何时应该使用它,以及使用它的优势是什么。