Javascript 订单模型或产品服务的单一责任?

Javascript 订单模型或产品服务的单一责任?,javascript,node.js,oop,Javascript,Node.js,Oop,对于单一责任问题,我应该将ProductService传递给Ordermodel类还是addProducts方法?或者应该怎么做 向订单添加新产品时,需要通过ProductService类获取产品信息 addProducts方法将负责检查数据库中是否已经存在产品,如果存在或不存在,它将更新数量,它将从ProductService类中获取产品信息,然后在数据库中添加产品信息 用法: const Order = new OrderModel(request.OrderId); // Update

对于单一责任问题,我应该将ProductService传递给Order
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
类解耦