Не уверен, что понимаю причину вашего вопроса:
Приводит ли чистая архитектура к принципам SOLID или не является хрупким или жестким, как правило?
Как Чистая архитектура может вызвать жесткость и хрупкость?Определение архитектуры сводится к следующему: как позаботиться широко о фундаментальных принципах ООП, таких как SOLID и другие …
С другой стороны, ваш следующий пример определенноденатура Чистая архитектура :
JobView
>
JobController
>
JobUseCase(JobEntity)
>
JobEntity
Thisнеявно говорит нам, что вы, скорее всего, извлекли свою сущность из контроллера, который полностью пропускает точку Interactor (или варианта использования) и, следовательно, Clean Architecture .
Интеракторы инкапсулируют бизнес-правила приложений, такие как взаимодействия с сущностями и CRUD для сущностей, выполняемых через Entity Gateway , который, в свою очередь, инкапсулирует уровень инфраструктуры.
Кроме того, в контексте Чистая архитектура ваши сущности, являющиеся частью уровня вашей модели, не должны иметь ничего общего с вашим контроллером, который является частью вашего механизма доставки.или точнее, который является оценщиком сообщения HTTP-запроса.Таким образом, денатурирование компонента нижнего уровня, который является контроллером, отрицательно повлияет на SRP ( => увеличение хрупкости ) и степень развязки между вашими компонентами ( => увеличение жесткости ).
Вы говорите:
И я понимаю, что если бы чистая архитектура вынуждала быть близкой к многоуровневой, мы не могли бы реализовать интерфейс репозитория непосредственно из слоя Frameworks, и мы должны реализовать егов терминах следующего уровня, и этот следующий уровень должен был реализовать его в терминах своего следующего уровня и т. д.
* * * * * * * * * * * *1062* вашей структуры сущностей принадлежат к инфраструктуреслой, и они должны быть обернуты, адаптированы Entity Gateway . Закон Деметры может быть важно соблюдать здесь, поскольку мы говорим о реализации порта закрытого уровня инфраструктуры (EntityGatewayInterface
).
Наконец, я подозреваю следующее предположениеошибочность, и поэтому все дальнейшие предположения, основанные на этом, приведут к полной путанице:
Итак, я предполагаю, что чистая архитектура не заставляет быть тесным, и позволяет быть открытыммногоуровневый, то есть, например, пользовательский интерфейс, который находится в слое каркасов, может напрямую обращаться к сущности, пересекая 2 слоя в пути.
Но независимо от того, вызывает ли он закрытие слоистых слоев или нет, Чистая архитектура явно и конкретно определяет себя (отношение между компонентами), например, на диаграмме классов UML ниже:
Я вижу только близко слоистая архитектура из этой диаграммы ...
Кажется me , что открытый слой являетсяБолее того, он не ограничивает то, что уровень должен ограничивать по своей природе, потому что по определению уровень является изоляцией, абстракцией группы компонентов, сокращенной до его порта, предназначенной для уменьшения технических долгов, таких как хрупкость и т. д...
Дополнительные ресурсы