靜態工廠方法在內部是否使用 new 關鍵字在 Java 中建立物件?
工廠模式是一種設計模式(建立模式),用於根據我們提供的資料建立多個物件。在其中,我們建立一個抽象化的建立過程物件。
示例
下面是工廠模式的示例實現。此處,我們有一個名為 Employee 的介面和 3 個類:實現它們的Student、Lecturer 和NonTeachingStaff。我們建立了一個工廠類 (EmployeeFactory),其中包含一個名為 getEmployee() 的方法。此方法接受一個 String 值並根據給定的 String 值返回其一類的物件。
import java.util.Scanner;
interface Person{
void dsplay();
}
class Student implements Person{
public void dsplay() {
System.out.println("This is display method of the Student class");
}
}
class Lecturer implements Person{
public void dsplay() {
System.out.println("This is display method of the Lecturer class");
}
}
class NonTeachingStaff implements Person{
public void dsplay() {
System.out.println("This is display method of the NonTeachingStaff class");
}
}
class PersonFactory{
public Person getPerson(String empType) {
if(empType == null){
return null;
}
if(empType.equalsIgnoreCase("student")){
return new Student();
} else if(empType.equalsIgnoreCase("lecturer")){
return new Lecturer();
} else if(empType.equalsIgnoreCase("non teaching staff")){
return new NonTeachingStaff();
}
return null;
}
}
public class FactoryPattern {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
System.out.println("Enter the type of the object you want: (student, lecturer, non teaching staff)");
String type = sc.next();
PersonFactory obj = new PersonFactory();
Person emp = obj.getPerson(type);
emp.dsplay();
}
}輸出
Enter the type of the object you want: (student, lecturer, non teaching staff) lecturer This is display method of the Lecturer class
靜態工廠方法
儘管有人說有五種方法可以在 Java 中建立物件,分別是 −
- 使用 new 關鍵字。
- 使用工廠方法。
- 使用克隆。
- 使用 Class.forName()。
- 使用 object 反序列化。
在 Java 中建立物件唯一的途徑是使用 new 關鍵字,其他所有途徑都是對其進行抽象。事實上,所有這些方法在內部使用 new 關鍵字。
示例
import java.util.Scanner;
interface Employee{
void dsplay();
}
class Student implements Employee{
public void dsplay() {
System.out.println("This is display method of the Student class");
}
}
class Lecturer implements Employee{
public void dsplay() {
System.out.println("This is display method of the Lecturer class");
}
}
class NonTeachingStaff implements Employee{
public void dsplay() {
System.out.println("This is display method of the NonTeachingStaff class");
}
}
class EmployeeFactory{
public static Employee getEmployee(String empType) {
if(empType == null){
return null;
}
if(empType.equalsIgnoreCase("student")){
return new Student();
} else if(empType.equalsIgnoreCase("lecturer")){
return new Lecturer();
} else if(empType.equalsIgnoreCase("non teaching staff")){
return new NonTeachingStaff();
}
return null;
}
}
public class FactoryPattern {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
System.out.println("Enter the type of the object you want: (student, lecturer, non teaching staff)");
String type = sc.next();
EmployeeFactory obj = new EmployeeFactory();
Employee emp = EmployeeFactory.getEmployee(type);
emp.dsplay();
}
}輸出
Enter the type of the object you want: (student, lecturer, non teaching staff) lecturer This is display method of the Lecturer class
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP