Где тут SOLID
-
S (SRP):
Order,PricingService,CheckoutService,EmailNotifier,CardPayment,InMemoryOrderRepository— каждый класс выполняет одну роль. -
O (OCP): новые способы оплаты/уведомления/скидок добавляются новыми классами, не меняя
CheckoutService. -
L (LSP):
Payment↔︎CardPayment/PaypalPayment,Notifier↔︎EmailNotifier/SmsNotifier— любое подставляется без сюрпризов. -
I (ISP): четыре маленьких интерфейса (
Payment,Notifier,DiscountPolicy,OrderRepository) вместо «бога-интерфейса». -
D (DIP): высокоуровневый
CheckoutServiceзависит от абстракций, а конкретные реализации передаются извне (композиция/DI).
