如何解决工厂模式和条件类的区别?
我对工厂模式有一些疑问,我将尝试使用在 JS 中处理 HTTP 错误的示例来说明它们。
据我所知,一个“正确的”工厂会根据传递给工厂的参数实例化不同的 ErrorXXX 类,如下所示:
class HTTPError {
createError(code) {
if (code === 'NOT_FOUND') {
return new Error404()
} else if (code === 'NOT_AUTH') {
return new Error401()
}
// etc....
}
}
但是因为在这个例子中所有的类都具有相同的属性,所以你可以在一个类中为这些属性有条件地赋值,而不是实例化许多不同的类
class HTTPError {
createError(code) {
let status = 500
let message = 'Server error'
if (code === 'NOT_FOUND') {
status = 404
message = 'Page not found'
} else if (code === 'NOT_AUTH') {
status = 401
message = 'Resource not authorized'
}
// etc...
return {status,message}
}
}
我的问题是:
- 这两种模式的不同目的是什么?
- 哪个更适合示例中的任务?
- 第二种模式有名字吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。