public static void Main()
var emailService = new OrderEmailService();
var orderService = new OrderService(emailService);
var handler = new CompleteOrderHandler(orderService);
handler.Invoke(new Order());
public class CompleteOrderHandler
private readonly IOrderService _orderService;
public CompleteOrderHandler(IOrderService orderService)
_orderService = orderService;
public void Invoke(Order order)
_orderService.CreateOrder(order);
public class OrderService : IOrderService
private readonly IOrderEmailService _emailService;
public OrderService(IOrderEmailService emailService)
_emailService = emailService;
public void CreateOrder(Order order)
_emailService.SendConfirmation(order);
public interface IOrderEmailService
void SendConfirmation(Order order);
public interface IOrderService
void CreateOrder(Order order);
public class OrderEmailService : IOrderEmailService
public void SendConfirmation(Order order)
Console.WriteLine("Email sent.");