Open shunkominato opened 4 years ago
業務ロジックの実装は、厳密にDDDで言うと、ドメインモデル(entityとvalueObject)です しかしやっていることはひらたくいうと、データと振る舞い(データの加工)を、適切な粒度でわけることです
vuexにおいて、データと振る舞いがどこかというと、storeとgettersです 単位としてはmodule≒ドメインモデル(entity または valueObject)でいいと思ってます
フロントにDDDを持ち込むとここがわかりにくいんですが、ドメインモデルを横断する概念として、 aggregateやserviceもまた、moduleになります moduleを横断するmoduleです、同じmoduleなのでわかりづらいですが
しかし業務ロジックの実装の基本はドメインモデルなので、そこだけ意識していきましょう!
repositoryは永続化でokです restとかファイルとかです
vuexでいうところのactionsとmutationsです しかしこれもわかりにくいですが、restなどを含まないactionsとmutationsはrepositoryではなく、 ドメインモデルを作成しているので、factoryだと思います
まとめると module=store + actions + mutations + getters store + actions = ドメインモデル(entity or valueObject) mutations + getters = ドメインモデルの操作(repository or factory) 複数のmodule = service or aggregate
DDDとしての概念と、使うフレームワークの都合は、かぶっている場所があれども、完全な一致を目指すのは厳しいです スタンダードな構成もないので、ここは気負いせず、試行錯誤していきましょう
service、repositoryの責務分け
・service ドメインモデルを組み合わせて振舞う gettersと組み合わせる 業務ロジックの実装
・repository 永続化、CRUD処理(フロントの場合API実行)