使用java.util.function.Function实现Factory Design Pattern是否正确
在下面的示例中,我使用Function引用来实例化Person类型对象.
import java.util.function.Function;
public class Main {
public static void main(String[] args) {
Function
最佳答案
工厂设计模式用于隐藏对象工厂背后的实现逻辑,其功能是使用继承来实现此目的.假设您有多种类型的人,例如一个SmartPerson和一个DumbPerson(实现相同的Person基类).人们可以要求工厂创建一个聪明或愚蠢的人,而不知道实现差异,因为所有它返回的是一个Person对象.
您可以使用引用构造函数的函数来实例化一个人,但此模式与创建对象的位置有关,允许您隐藏某些实现逻辑.
这种隐藏在工厂后面的逻辑可以为将来节省很多时间,不同的类可以使用工厂来创建人员,因为改变你创建人的方式只需要你修改工厂中的创建方法和不会影响使用工厂的每个班级.
@Test
public void testSimpleFactory() {
PersonFactory personFactory = new PersonFactory();
Person person = personFactory.createPerson("dumb");
person.doMath(); // prints 1 + 1 = 3
}
public class PersonFactory {
public Person createPerson(String characteristic) {
switch (characteristic) {
case "smart":
return new SmartPerson();
case "dumb":
return new DumbPerson();
default:
return null;
}
}
}
public interface Person {
void doMath();
}
public class SmartPerson implements Person {
@Override
public void doMath() {
System.out.println("1 + 1 = 2");
}
}
public class DumbPerson implements Person {
@Override
public void doMath() {
System.out.println("1 + 1 = 3");
}
}