feat: implement payment strategy pattern with multiple payment methods

lab4
Artem-Darius Weber 2 months ago
parent c586e3ed93
commit 22e0883d5a

@ -0,0 +1,48 @@
# Интерфейс стратегии (общий для всех стратегий)
class PaymentStrategy
def pay(amount)
raise NotImplementedError, "Метод pay должен быть реализован в подклассе"
end
end
# Реализация стратегии оплаты картой
class CreditCardPayment < PaymentStrategy
def pay(amount)
puts "Оплата #{amount}с использованием кредитной карты 💳"
end
end
# Реализация стратегии оплаты через SberBank
class SberPayment < PaymentStrategy
def pay(amount)
puts "Оплата #{amount}₽ через Sber ID 🏦"
end
end
# Реализация стратегии оплаты биткоинами
class BitcoinPayment < PaymentStrategy
def pay(amount)
puts "Оплата #{amount}₽ в биткоинах ₿"
end
end
# Контекст использующий стратегию
class PaymentProcessor
def initialize(strategy)
@strategy = strategy
end
def process_payment(amount)
@strategy.pay(amount)
end
end
# === Пример использования ===
card_payment = PaymentProcessor.new(CreditCardPayment.new)
card_payment.process_payment(1000)
paypal_payment = PaymentProcessor.new(SberPayment.new)
paypal_payment.process_payment(2000)
bitcoin_payment = PaymentProcessor.new(BitcoinPayment.new)
bitcoin_payment.process_payment(3000)
Loading…
Cancel
Save