Я пытаюсь реализовать подход с шаблоном стратегии для обработки платежей в моей весной приложении на основе Webflux.// Model interface
public interface PaymentModel {
}
// Base model with attributes needed for all payment types
public class BaseModel implements PaymentModel {
private Float amount;
private Integer userId;
}
public class SquareCardModel extends BaseModel {
private String merchantId;
private String device;
private String orderId;
}
public class StripeCardModel extends BaseModel {
private String merchantId;
private String orderId;
}
public class CashModel extends BaseModel {
private String name;
private String orderId;
}
класс службы,
@Service
public interface PaymentService {
Mono pay(T model);
String method();
}
@Service
public class CashPaymentService implements PaymentService {
private static final String PAYMENT_METHOD = "cash";
@Override
public Mono pay(CashModel model) {
// TODO Auto-generated method stub
return null;
}
@Override
public String method() {
return PAYMENT_METHOD;
}
}
@Service
public class SquarePaymentService implements PaymentService {
private static final String PAYMENT_METHOD = "cash";
@Override
public Mono pay(SquareCardModel model) {
// TODO Auto-generated method stub
return null;
}
@Override
public String method() {
return PAYMENT_METHOD;
}
}
@Service
public class StripePaymentService implements PaymentService {
private static final String PAYMENT_METHOD = "cash";
@Override
public Mono pay(SquareCardModel model) {
// TODO Auto-generated method stub
return null;
}
@Override
public String method() {
return PAYMENT_METHOD;
}
}
фабричный класс,
@Service
public class PaymentFactory {
private final List
> paymentServices;
@Autowired
public PaymentFactory(List
Подробнее здесь: https://stackoverflow.com/questions/703 ... gy-pattern