Квест → Как хакнуть форму
Прошли: 77
Создание и внедрение интерфейсов в наш код — это важно. Это помогает с подменой компонентов, облегчает тестирование, отделяет "что" от "как".
Но просто влепить интерфейс к классу и забыть — этого недостаточно.
Мы также должны подумать о том, на что мы "натянем" этот интерфейс.
Использование правильных шаблонов/паттернов для общения между микросервисами может помочь масштабировать ваше приложение и решить наиболее распространенные системные проблемы. Мы начали с прямых HTTP-вызовов для всех взаимодействий, но решили перейти к событийной системе. Эта система изменила наше мышление о взаимодействии между службами, навязала масштабируемые паттерны и увеличила отказоустойчивость.
Мы перешли к использованию событий вместо традиционного HTTP-взаимодействия по нескольким причинам.
Небольшой простой объект, как деньги или диапазон дат, равенство которых не основано на идентичности
Объект-Значение (Value Object) — это объект, который представляет собой понятие из предметной области. В DDD (Domain Driven Development — разработка на основе предметной области, или предметно-ориентированное программирование) важно то, что Value Object поддерживает и обогащает Единый Язык вашей Предметной Области. Это не только примитивы, которые представляют собой некоторые значения, — они являются полноправными гражданами Предметной Области, которые формируют поведение вашего приложения.
Хорошие примеры Value Object-ов, упомянутые у Мартина, — деньги и время. При создании ГИС-приложений вы можете прийти к такому Объекту-Значению, как Location($lat, $long)
, который будет инкапсулировать широту/долготу и подобное. Вопрос, который вы, вероятно, захотите задать — почему это лучше, чем просто передать два float`а в массиве и называть это $location
?
Основы объектно-ориентированного проектирования — О различии между простыми и сложными решениями.
перевод статьи "Foundations of OO Design"