Distributor.cs 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. using System;
  2. using System.Linq;
  3. namespace VisitorPattern
  4. {
  5. /// <summary>
  6. /// 收发货员
  7. /// 对销售订单,进行发货处理
  8. /// 对退货订单,进行收货处理
  9. /// </summary>
  10. public class Distributor : Visitor
  11. {
  12. public int Id { get; set; }
  13. public string Name { get; set; }
  14. public override void Visit(SaleOrder saleOrder)
  15. {
  16. Console.WriteLine($"开始为销售订单【{saleOrder.Id}】进行发货处理:", saleOrder.Id);
  17. Console.WriteLine($"一共打包{saleOrder.OrderItems.Sum(line => line.Qty)}件商品。");
  18. Console.WriteLine($"收货人:{saleOrder.Customer.RealName}");
  19. Console.WriteLine($"联系电话:{saleOrder.Customer.Phone}");
  20. Console.WriteLine($"收货地址:{saleOrder.Customer.Address}");
  21. Console.WriteLine($"邮政编码:{saleOrder.Customer.Zip}");
  22. Console.WriteLine($"订单【{saleOrder.Id}】发货完毕!" );
  23. Console.WriteLine("==========================");
  24. }
  25. public override void Visit(ReturnOrder returnOrder)
  26. {
  27. Console.WriteLine($"收到来自【{returnOrder.Customer.NickName}】的退货订单【{returnOrder.Id}】,进行退货收货处理:");
  28. foreach (var item in returnOrder.OrderItems)
  29. {
  30. Console.WriteLine($"【{item.Product.Name}】商品* {item.Qty}" );
  31. }
  32. Console.WriteLine($"退货订单【{returnOrder.Id}】收货处理完毕!" );
  33. Console.WriteLine("==========================");
  34. }
  35. }
  36. }