
Symfony アーキテクチャ
Hexagonal architecture、DDD、CQRS、repositories、DTOs、value objects、bounded contexts
1hexagonal architecture において、ports の主な役割は何ですか?
hexagonal architecture において、ports の主な役割は何ですか?
回答
ports は、ビジネスドメインと外部世界との間の契約を定義するインターフェースです。primary ports(または driving ports)は外部アクターがドメイン内のアクションをトリガーできるようにし、secondary ports(または driven ports)はドメインがデータベースやサードパーティサービスなどの外部インフラと連携できるようにします。この抽象化により、ビジネスドメインに影響を与えることなく実装を変更できます。
2Symfony の hexagonal architecture における adapter とは何ですか?
Symfony の hexagonal architecture における adapter とは何ですか?
回答
adapter は、外部世界と domain をつなぐ port の具体的な実装です。例えば、DoctrineUserRepository は UserRepositoryInterface port を実装する adapter です。primary 側では、Symfony controller が HTTP リクエストを domain の use case に適応させる adapter となります。この分離により、infrastructure とは独立して domain をテストできます。
3Domain-Driven Design において、Value Object の主な特徴は何ですか?
Domain-Driven Design において、Value Object の主な特徴は何ですか?
回答
Value Object は、識別子ではなく属性によって定義されます。同じ値を持つ 2 つの Value Object は等しいとみなされます。これらは不変であり、変更を加えると新しいインスタンスが生成されます。例えば、Email や Money オブジェクトは典型的な Value Object です。この不変性によりデータの一貫性が保証され、複雑なシステムにおいてコードを推論しやすくなります。
DDD における Aggregate Root の役割は何ですか?
DTO(Data Transfer Object)とは何ですか、そして Symfony ではいつ使用しますか?
+21 面接問題