5) Сборка (композиция вместо наследования)

5) Сборка (композиция вместо наследования)


public class App { public static void main(String[] args) { // Выбор реализаций = расширение без изменения кода сервисов (OCP) Payment payment = new CardPayment(); // легко заменить на PaypalPayment Notifier notifier = new EmailNotifier(); // или SmsNotifier DiscountPolicy discount = new TenPercentDiscount(); // или NoDiscount OrderRepository repo = new InMemoryOrderRepository(); PricingService pricing = new PricingService(discount); CheckoutService checkout = new CheckoutService(payment, notifier, repo, pricing); var order = new Order("user@example.com", new Money("RUB", new java.math.BigDecimal("1000.00"))); checkout.checkout(order); } }

Автор: к.п.н., Румянцев Сергей Александрович, доцент Финансового университета при Правительстве РФ; доцент ОЧУВО Международного инновационного университета; Консалтинг, управление разработкой ПО; системный и бизнес анализ; менеджмент; аналитиз данных; управление ИТ. Телефон для связи +79269444818 (мессенджеры)   Короткая ссылка:

5) Сборка (композиция вместо наследования)


public class App { public static void main(String[] args) { // Выбор реализаций = расширение без изменения кода сервисов (OCP) Payment payment = new CardPayment(); // легко заменить на PaypalPayment Notifier notifier = new EmailNotifier(); // или SmsNotifier DiscountPolicy discount = new TenPercentDiscount(); // или NoDiscount OrderRepository repo = new InMemoryOrderRepository(); PricingService pricing = new PricingService(discount); CheckoutService checkout = new CheckoutService(payment, notifier, repo, pricing); var order = new Order("user@example.com", new Money("RUB", new java.math.BigDecimal("1000.00"))); checkout.checkout(order); } }

https://webprogr.ru/~Q06q7
Короткая ссылка на новость:https://webprogr.ru/~Q06q7


// Пример кода
function hello(name) {
  console.log(`Hi, ${name}!`);
}
hello("Sergey");

Последние новости

Рейтинг@Mail.ru