Javascript 订单模型或产品服务的单一责任?
对于单一责任问题,我应该将ProductService传递给OrderJavascript 订单模型或产品服务的单一责任?,javascript,node.js,oop,Javascript,Node.js,Oop,对于单一责任问题,我应该将ProductService传递给Ordermodel类还是addProducts方法?或者应该怎么做 向订单添加新产品时,需要通过ProductService类获取产品信息 addProducts方法将负责检查数据库中是否已经存在产品,如果存在或不存在,它将更新数量,它将从ProductService类中获取产品信息,然后在数据库中添加产品信息 用法: const Order = new OrderModel(request.OrderId); // Update
model
类还是addProducts
方法?或者应该怎么做
向订单添加新产品时,需要通过ProductService
类获取产品信息
addProducts
方法将负责检查数据库中是否已经存在产品,如果存在或不存在,它将更新数量,它将从ProductService
类中获取产品信息,然后在数据库中添加产品信息
用法:
const Order = new OrderModel(request.OrderId);
// Update Qty on existing products in Db or Add New Products in db
Order.addProducts([
{ ProductId: 111, Qty: 1 }, // new item
{ ProductId: 222, Qty: 2 } // existing item, set from 1 to 2 Qty in db
])
class ProductService {
getProduct(productId) {
return {} //fetch product info via API
}
}
对
订单
实例进行的每个方法调用都将依赖于相同的产品服务
实例,因此将产品服务
作为参数传递给构造函数而不是作为addProducts
方法的参数是有意义的
如果ProductService
是通用的,这意味着所有单个Order
实例共享相同的ProductService
实例,那么您可以使用helper函数创建Order
。在实例化ProductService
的任何根文件中,都可以导出一些了解该实例的工厂函数
export const service = new ProductService();
export const createOrder = (orderId) => new Order(service, orderId);
这样,Order
类仍然与ProductService
类解耦