Senior
Υλοποιήστε το μοτίβο Στρατηγική για τον υπολογισμό του κόστους αποστολής και μια υπηρεσία για την εφαρμογή του
sobes.tech AI
Απάντηση από AI
Паттерн Стратегия позволяет определить семейство алгоритмов, инкапсулировать каждый из них и делать их взаимозаменяемыми.
Пример реализации для расчёта стоимости доставки:
// Интерфейс стратегии
public interface DeliveryStrategy {
double calculateCost(Order order);
}
// Конкретные стратегии
public class StandardDelivery implements DeliveryStrategy {
public double calculateCost(Order order) {
return 5.0; // фиксированная стоимость
}
}
public class ExpressDelivery implements DeliveryStrategy {
public double calculateCost(Order order) {
return 10.0 + 0.5 * order.getWeight();
}
}
public class FreeDelivery implements DeliveryStrategy {
public double calculateCost(Order order) {
return 0.0;
}
}
// Класс заказа
public class Order {
private double weight;
// конструкторы, геттеры
public Order(double weight) {
this.weight = weight;
}
public double getWeight() {
return weight;
}
}
// Сервис для применения стратегии
public class DeliveryService {
private DeliveryStrategy strategy;
public DeliveryService(DeliveryStrategy strategy) {
this.strategy = strategy;
}
public void setStrategy(DeliveryStrategy strategy) {
this.strategy = strategy;
}
public double calculateDeliveryCost(Order order) {
return strategy.calculateCost(order);
}
}
// Использование
public class Main {
public static void main(String[] args) {
Order order = new Order(10); // вес 10 кг
DeliveryService service = new DeliveryService(new StandardDelivery());
System.out.println("Стоимость доставки: " + service.calculateDeliveryCost(order));
service.setStrategy(new ExpressDelivery());
System.out.println("Стоимость экспресс-доставки: " + service.calculateDeliveryCost(order));
}
}