У меня есть OrderService, который я использую в своих контроллерах.
То, что я сделал, было просто унаследовано от пользовательского контроллера, где я добавил OrderService в качестве свойства. Я инициализирую OrderService в событии OnActionExecuting.
При инициализации OrderService я устанавливаю свойство Order.
Это связано с тем, что OrderService выполняет действия с ордером, поэтому имеет смысл установить его один раз, а не передавать ордер в каждый метод.
Соответствует ли этот дизайн передовой практике?
public class MyController : Controller
{
public OrderService OrderService {get; set;}
protected override void OnActionExecuting(...)
{
OrderService = new OrderService(getOrderIdFromCookie());
}
}
public class OrderService
{
private Order _order;
public OrderService(int orderId)
{
_order = Dao.GetOrderById(orderId);
}
public void AddProduct(Product product)
{
product.OrderId = _order.Id; // assumes order is loaded
ProductDao.Add(product);
}
}
Это действительно не зависящий от языка вопрос , насколько я понимаю, служба не должна действительно содержать какое-либо состояние.
Я полагаю, что класс сервисного уровня должен быть корректным? (при настройке с инжекцией зависимости).
Методы не должны предполагать, что объект Order имеет состояние.
Если это так, то мой дизайн не верен, верно?