1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162
| from typing import Dict, List, Optional from abc import ABC, abstractmethod
class UserService: """用户服务子系统"""
_users: Dict[str, Dict] = { "user1": {"id": "user1", "name": "Alice", "email": "alice@example.com"}, "user2": {"id": "user2", "name": "Bob", "email": "bob@example.com"} }
def get_user(self, user_id: str) -> Optional[Dict]: return self._users.get(user_id)
def create_user(self, name: str, email: str) -> Dict: user_id = "user" + str(len(self._users) + 1) user = {"id": user_id, "name": name, "email": email} self._users[user_id] = user return user
def delete_user(self, user_id: str) -> bool: if user_id in self._users: del self._users[user_id] return True return False
class OrderService: """订单服务子系统"""
_orders: List[Dict] = []
def create_order(self, user_id: str, items: List[str]) -> Dict: order_id = "ORD-" + str(len(self._orders) + 1) order = { "id": order_id, "user_id": user_id, "items": items, "status": "pending" } self._orders.append(order) return order
def get_order(self, order_id: str) -> Optional[Dict]: for order in self._orders: if order["id"] == order_id: return order return None
def cancel_order(self, order_id: str) -> bool: order = self.get_order(order_id) if order: order["status"] = "cancelled" return True return False
class PaymentService: """支付服务子系统"""
def process_payment(self, order_id: str, amount: float) -> bool: print(f"处理支付: 订单 {order_id}, 金额 {amount}") return True
def refund(self, order_id: str, amount: float) -> bool: print(f"退款: 订单 {order_id}, 金额 {amount}") return True
class NotificationService: """通知服务子系统"""
def send_email(self, to: str, subject: str, body: str) -> None: print(f"发送邮件到 {to}: {subject}")
def send_sms(self, to: str, message: str) -> None: print(f"发送短信到 {to}: {message}")
class ECommerceFacade: """电商系统外观"""
def __init__(self): self.user_service = UserService() self.order_service = OrderService() self.payment_service = PaymentService() self.notification_service = NotificationService()
def create_account(self, name: str, email: str, phone: str) -> Dict: """创建账户的统一接口""" user = self.user_service.create_user(name, email) self.notification_service.send_email( email, "欢迎注册", f"欢迎 {name}!您的账户已创建。" ) self.notification_service.send_sms( phone, f"欢迎 {name}!您的账户已创建。" ) return user
def place_order(self, user_id: str, items: List[str]) -> Optional[Dict]: """下单的统一接口""" user = self.user_service.get_user(user_id) if not user: print("用户不存在") return None
order = self.order_service.create_order(user_id, items)
amount = len(items) * 99.0 if not self.payment_service.process_payment(order["id"], amount): self.order_service.cancel_order(order["id"]) return None
self.notification_service.send_email( user["email"], "订单确认", f"您的订单 {order['id']} 已创建。" )
return order
def cancel_order(self, order_id: str) -> bool: """取消订单的统一接口""" if not self.order_service.cancel_order(order_id): return False
self.payment_service.refund(order_id, 99.0)
return True
def main(): ecommerce = ECommerceFacade()
user = ecommerce.create_account("Charlie", "charlie@example.com", "13800138000") print(f"用户创建成功: {user}\n")
order = ecommerce.place_order(user["id"], ["商品A", "商品B"]) print(f"订单创建成功: {order}\n")
ecommerce.cancel_order(order["id"])
if __name__ == "__main__": main()
|