Какой принцип SOLID нарушает God Object?

«Какой принцип SOLID нарушает God Object?» — вопрос из категории ООП, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

God Object нарушает Принцип единственной ответственности (Single Responsibility Principle, SRP).

Почему это нарушение: SRP гласит, что класс должен иметь только одну причину для изменения. God Object концентрирует множество несвязанных функций, что приводит к:

  • Высокой связанности (coupling).
  • Сложности тестирования и поддержки.
  • Хрупкости — изменение в одной области может сломать другие.

Пример God Object (нарушение SRP):

// Нарушение: Класс делает слишком много.
class OrderManager {
    public void saveOrder(Order o) { /* ... */ }
    public void calculateTax(Order o) { /* ... */ }
    public void generateInvoice(Order o) { /* ... */ }
    public void sendEmailNotification(Order o) { /* ... */ }
    public void updateInventory(Order o) { /* ... */ }
}

Решение (следование SRP):

// Каждый класс отвечает за одну задачу.
class OrderRepository { void save(Order o) { /* ... */ } }
class TaxCalculator { void calculate(Order o) { /* ... */ } }
class InvoiceGenerator { void generate(Order o) { /* ... */ } }
class NotificationService { void sendEmail(Order o) { /* ... */ } }
class InventoryService { void update(Order o) { /* ... */ } }