using System.Collections.Generic;
public class OrderProcessor
public void ProcessOrder(Order order)
OrderRepository.AddOrder(order);
public class CreditCardPayment
public void Pay(decimal amount)
Console.WriteLine($"Processing credit card payment of ${amount}.");
public class PayPalPayment
public void Pay(decimal amount)
Console.WriteLine($"Processing PayPal payment of ${amount}.");
public int OrderId { get; set; }
public string PaymentMethod { get; set; }
public decimal Amount { get; set; }
public static class OrderRepository
private static readonly List<Order> _orders = new List<Order>();
public static void AddOrder(Order order)
public static void DisplayOrdersByPaymentMethod(string method)
public static void DisplayTotalAmountByPaymentMethod()
public static void DisplayOrdersAboveAmount(decimal threshold)
static void Main(string[] args)
var creditCardPayment = new CreditCardPayment();
var payPalPayment = new PayPalPayment();
var orderProcessor = new OrderProcessor();
orderProcessor.ProcessOrder(new Order { OrderId = 1, PaymentMethod = "CreditCard", Amount = 150 });
orderProcessor = new OrderProcessor();
orderProcessor.ProcessOrder(new Order { OrderId = 2, PaymentMethod = "PayPal", Amount = 75 });
orderProcessor = new OrderProcessor();
orderProcessor.ProcessOrder(new Order { OrderId = 3, PaymentMethod = "CreditCard", Amount = 300 });