public void NewOrder(int userId, int productId, int cityId) { IUserSystem iUserSystem = new UserSystem("为什么"); IStorageSystem iStorageSystem = new StorageSystem(); ILogisticsSystem iLogisticsSystem = new LogisticsSystem(); IOrderSystem iOrderSystem = new OrderSystem(); if (!iUserSystem.CheckUser(userId)) { Console.WriteLine("用户检测失败"); } else if (!iStorageSystem.CheckStorage(productId)) { Console.WriteLine("仓储检测失败"); } else if (!iLogisticsSystem.CheckLogistics(productId, cityId)) { Console.WriteLine("物流检测失败"); //不能直接去物流增加一个检测失败的数据记录 //而是通过物流系统的方法去做 } else if (!iOrderSystem.CheckOrder(userId, productId)) { Console.WriteLine("订单检测失败"); } else { iOrderSystem.NewOrder(userId, productId); iLogisticsSystem.NewLogistics(productId, cityId); } }
/// <summary> /// 门面模式通过是单例的 /// 门面模式不能直接新增一个物流或者仓储检测方法,只能通过调用物流系统或者仓储系统的检测方法,这是门面模式的严格界定 /// 用于分层 /// 门面模式就是为了屏蔽上端知道太多细节 /// </summary> /// <param name="userId"></param> /// <param name="productId"></param> public void NewOrder(int userId, int productId) { IUserSystem iUser = new UserSystem(); ILogisticsSystem iLogistics = new LogisticsSystem(); IStorageSystem iStorage = new StorageSystem(); IOrderSystem iOrder = new OrderSystem(); if (!iUser.CheckUser(userId)) { Console.WriteLine("用户检测失败"); } else if (!iStorage.CheckStorage(productId)) { Console.WriteLine("仓储检测失败"); } else if (!iLogistics.CheckLogistics(userId, productId)) { Console.WriteLine("物流检测失败"); } else if (!iOrder.CheckOrder(userId, productId)) { Console.WriteLine("订单检测失败"); } else { iOrder.NewOrder(userId, productId); iLogistics.NewLogistics(userId, productId); } }
static void Main(string[] args) { User user = new User(); user.setUserId(1); user.setName("Shashi"); user.setEmailId("*****@*****.**"); Item item1 = new Item(); item1.setName("item1"); item1.setPrice(20); Item item2 = new Item(); item2.setName("item2"); item2.setPrice(40); List <Item> items = new List <Item>(); items.Add(item1); items.Add(item2); PaymentDetails paymentDetails = new PaymentDetails(); paymentDetails.setAmount(100); paymentDetails.setPaymentMode(PaymentMode.CREDIT_CARD); paymentDetails.setCardNumber("12345678"); Location destination = new Location(); destination.setLatitude(73.23); destination.setLongitude(132.34); Order order = new Order(); order.setOrderId(1); order.setItems(items); order.setCurrentStatus(OrderStatus.PROCESSING); order.setDestination(destination); order.setPaymentDetails(paymentDetails); order.setTimeOfOrderDelivery(new DateTime()); LogisticsSystem logisticsSystem = new LogisticsSystem(); logisticsSystem.registerNewUser(user); logisticsSystem.takeAnOrder(order); logisticsSystem.processOrder(order); logisticsSystem.trackOrder(order.getOrderId()); Console.ReadLine(); }