我目前正在研究一個學生項目並想知道是否有方法使用工廠方法專門創建對象?獨家使用工廠創建對象
public class PersonFactory {
public static Person createPerson() {
// some constraints ...
return new Person();
}
}
我示範PersonFactory.java
應該與它的createPerson()
方法返回Person
對象。
public class Person {
// some examples ...
private String name;
private int age;
public Person() {
// ...
}
}
這工作得很好,但在main
計劃,我仍然能夠創造Person
對象與它們共同構造函數(因爲它是public
)。但是,如果我將構造函數更改爲private
,工廠方法也無法訪問它。
public class PersonManagement {
public static void main(String[] args) {
// both still works ...
Person p1 = new Person();
Person p2 = PersonFactory.createPerson();
}
}
非常感謝你提前;)
注意工廠模式不會強制你使用工廠類。定義一個私有構造函數並使用工廠方法(即getInstance())可以被子類實現或覆蓋,也是模式的有效用法。 –