实际上,为什么我们需要在OOP中使用工厂功能,并且可以通过NEW来创建任何对象的副本?
答案 0 :(得分:0)
因此,工厂方法有意义的原因有很多:
引发异常::如果您需要做一些可能会引发异常的创建工作。 假设您正在基于表中的行创建对象。您希望将用于填充对象的逻辑与对象一起使用,因为否则您将不必要地进行耦合。同时,构造函数通常不应引发异常。那么,如果要求您的构造函数根据不存在的行创建对象会怎样?还是访问数据库时出现问题怎么办?拥有工厂函数可以让您有更大的自由度来处理此问题,从引发异常到返回null到返回其他类型。
多态构造:如果要基于用户输入构造对象怎么办?您可以通过函数调用对创建对象所需的所有用户输入进行线程化,直到到达创建对象所需的位置为止。或者,您可以创建一个包含所有这些参数的工厂对象,并将其传递。第二种方法增加了封装,因此,如果将来您需要改进所使用的输入,则可以在工厂构建时完成此操作。如果创建的类需要不同,或者创建算法有所不同,这还允许多个工厂从公共接口继承。这将被称为abstract factory,并且是OOP中非常常见的模式。
所有这些,我肯定已经在不需要使用工厂方法的情况下见过它们,因此工厂方法不是万能的。但是它们是优秀的软件架构师经常使用的重要工具。