javascript - 为什么 OOP 中需要工厂函数?

标签 javascript oop javascript-objects factory

实际上为什么我们需要 OOP 中的工厂函数,并且我们可以 NEW 来创建任何对象的副本?

最佳答案

因此工厂方法有意义的原因有很多:

抛出异常:如果您需要在创建时执行一些可能引发异常的工作。 假设您正在基于表中的行创建一个对象。您希望填充对象的逻辑与对象一起使用,否则就会产生不必要的耦合。同时,构造函数一般不应该抛出异常。那么,如果您的构造函数被要求基于不存在的行创建对象,会发生什么情况呢?或者如果访问数据库出现问题怎么办?拥有一个工厂函数可以让你有更多的自由度来处理这个问题,从抛出异常到返回 null,再到返回不同的类型。

多态构造:如果您想根据用户输入构造一个对象怎么办?您可以通过函数调用对创建对象所需的所有用户输入进行线程化,直到到达需要创建对象的位置。或者您可以创建一个包含所有这些参数的工厂对象,并将其传递出去。第二种方式增加了封装,所以如果将来你需要细化所使用的输入,你可以在工厂构建时进行,然后就完成了。这还允许多个工厂继承一个公共(public)接口(interface),以防创建的类需要不同,或者创建算法有某种不同。这将被称为 abstract factory ,并且是 OOP 中非常常见的模式。

综上所述,我确实见过在不必要的地方使用工厂方法,因此工厂方法并不是万能药。但它们是优秀软件架构师经常使用的重要工具。

关于javascript - 为什么 OOP 中需要工厂函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56420480/

相关文章:

javascript - 与 x 轴类别文本不同的工具提示 - highcharts

JavaScript:字符串匹配后返回 anchor 标记

php 析构函数行为

javascript - 如何使用 Javascript 函数构造函数在每个框上添加点击警报?

javascript - Nativescript 导航到同一页面

Javascript将数组中的数字与一系列连续数字分组

ruby - 类方法中的define_method

oop - 父类和父类(super class)的区别

javascript - JS通过构造器调用函数为对象添加属性

node.js - 在单个 console.log 中输出字符串和对象