Ho un sito di acquisti che consente agli utenti di effettuare ordini. Nella mia applicazione web quando gli utenti fanno clic su "Crea ordine", chiamo una classe OrderService che assomiglia al seguente:
public class OrderService
{
public void CreateOrder(OrderDTO dto)
{
SaveOrder saveOrder = new SaveOrder();
ReduceStock reduceStock = new ReduceStock();
CustomerOrderEmail customerOrderEmail = new CustomerOrderEmail();
saveOrder.SaveToDatabase(dto);
reduceStock.ReduceStockInDatabase(dto);
customerOrderEmail.SendEmail(dto);
}
public void ApproveOrder(OrderDTO dto)
{
}
public void DispatchOrder(OrderDTO dto)
{
}
}
Il metodo Crea ordine esegue 3 operazioni che ho suddiviso in classi.
- Salva ordine nel database
- Riduci il magazzino nel database
- Email conferma cliente
Stiamo avendo una discussione interna sull'opportunità o meno di avere un'altra classe chiamata qualcosa come CreateOrderProcess che ha 1 metodo pubblico, questo metodo chiamerebbe quindi i 3 metodi precedenti. Vedi sotto:
public class OrderService
{
public void CreateOrder(OrderDTO dto)
{
CreateOrderProcess createOrderProcess = new CreateOrderProcess();
createOrderProcess.Process(dto);
}
public void ApproveOrder(OrderDTO dto)
{
}
public void DispatchOrder(OrderDTO dto)
{
}
}
public class CreateOrderProcess
{
public void Process(OrderDTO dto)
{
SaveOrder saveOrder = new SaveOrder();
ReduceStock reduceStock = new ReduceStock();
CustomerOrderEmail customerOrderEmail = new CustomerOrderEmail();
saveOrder.SaveToDatabase(dto);
reduceStock.ReduceStockInDatabase(dto);
customerOrderEmail.SendEmail(dto);
}
}
Siamo nuovi in questo e stiamo cercando qualche direzione. Qual è la migliore pratica? Dovremmo aggiungere questa classe in più o no?
La seconda domanda è che le nostre classi SaveOrder, ReduceStock e CustomerOrderEmail si trovano in un progetto chiamato BusinessLogic. Abbiamo ragione a definire queste classi come logica aziendale?
Grazie in anticipo