shunkominato / vue-ts-decorator-fx-api

0 stars 0 forks source link

Vuex設計 #4

Open shunkominato opened 4 years ago

shunkominato commented 4 years ago

service、repositoryの責務分け

・service ドメインモデルを組み合わせて振舞う gettersと組み合わせる 業務ロジックの実装

・repository 永続化、CRUD処理(フロントの場合API実行)

yakisuzu commented 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としての概念と、使うフレームワークの都合は、かぶっている場所があれども、完全な一致を目指すのは厳しいです スタンダードな構成もないので、ここは気負いせず、試行錯誤していきましょう