Помните, в прошлый раз мы говорили о паттернах доменной логики Мартина Фаулера? Мы узнали, что сценарий транзакции и модель домена имеют свои особые преимущества и как знание того, когда их использовать, может действительно повысить уровень наших проектов кодирования.
Что ж, сегодня мы возвращаемся к этому набору инструментов для кодирования и стряхиваем пыль с еще одной жемчужины: шаблона стратегии. Мы также собираемся обратить внимание на функцию TypeScript, которая не всегда привлекает внимание, которого она заслуживает: Union Types. Когда мы объединяем этих двоих, происходит волшебство! Мы можем сделать наш код более читабельным, простым в управлении и вдохнуть дополнительную жизнь в логику предметной области. Кроме того, мы можем обойти эти процедурные сценарии переключения.
К концу этой статьи у вас за плечами будут еще два мощных инструмента. Вы не только поймете, как работают паттерн стратегии и типы объединения, но и узнаете, как их использовать, чтобы избежать переключений и сделать свой код чище и эффективнее.
Но сначала давайте немного поговорим об Open/Closed…
Принцип открытого-закрытого: основа объектно-ориентированного проектирования
Принцип открытости-закрытости (OCP) — один из пяти принципов твердого объектно-ориентированного проектирования, придуманный Робертом С. Мартином (также известным как дядя Боб). Эти принципы часто вместе обозначаются аббревиатурой SOLID, где принцип Open-Closed представляет букву «O».
Принцип открытости-закрытости гласит, что «программные объекты (классы, модули, функции и т. д.) должны быть открыты для расширения, но закрыты для модификации». По сути, это означает, что вы должны иметь возможность добавлять новые функции или изменять существующее поведение системы без изменения ее исходного кода.
Представьте себе систему как ряд взаимосвязанных компонентов или строительных блоков. В соответствии с принципом открытого-закрытого, если вам нужно добавить новую функциональность или изменить существующую, вы должны иметь возможность сделать это, добавив или заменив блоки, а не возясь с внутренностями существующих.
Почему это важно? Причин несколько:
- Минимизация риска: каждое изменение в существующем коде несет в себе риск появления новых ошибок…