classDiagram
class PaymentRequest {
<<abstract>>
+String requestId
+BigDecimal amount
+Currency currency
+String merchantId
+validate() boolean
}
class CreditCardPaymentRequest {
+String cardNumber
+String cardHolder
+Date expiryDate
+String cvv
+validate() boolean
+maskCardNumber() String
}
class AlipayPaymentRequest {
+String authCode
+String buyerId
+validate() boolean
}
class PaymentProcessor {
<<interface>>
+PaymentResult process(PaymentRequest request)
+boolean supports(PaymentMethod method)
}
class CreditCardProcessor {
+PaymentGateway gateway
+PaymentResult process(PaymentRequest request)
+boolean supports(PaymentMethod method)
+refund(String transactionId)
}
class AlipayProcessor {
+AlipayClient client
+PaymentResult process(PaymentRequest request)
+boolean supports(PaymentMethod method)
}
class PaymentResult {
+boolean success
+String transactionId
+String message
+Date timestamp
+BigDecimal processedAmount
}
class PaymentStrategyFactory {
<<interface>>
-Map~PaymentMethod, PaymentProcessor~ processors
+getProcessor(PaymentMethod method) PaymentProcessor
+registerProcessor(PaymentMethod method, PaymentProcessor processor)
}
class PaymentService {
<<interface>>
-PaymentStrategyFactory factory
+PaymentResult executePayment(PaymentRequest request)
+PaymentResult refundPayment(String transactionId)
}
PaymentRequest <|-- CreditCardPaymentRequest
PaymentRequest <|-- AlipayPaymentRequest
PaymentProcessor <|.. CreditCardProcessor
PaymentProcessor <|.. AlipayProcessor
CreditCardProcessor ..> PaymentRequest : processes
AlipayProcessor ..> PaymentRequest : processes
PaymentService --> PaymentStrategyFactory
PaymentStrategyFactory --> PaymentProcessor
CreditCardProcessor --> PaymentResult : creates
AlipayProcessor --> PaymentResult : creates
note for PaymentRequest "使用策略模式
支持多种支付方式"