沒有規定在哪邊寫 DB
Xmpp Received
沒有 Observer,只能使用 $evalAsync 更新
ChatsService(聊天室列表)
service vs controller
DB
ChatController(聊天室)
controller 跨 DB
而不是由 service call
Service
ChatService(聊天室)
語意模糊,身兼兩份工作:
ChatsService (聯絡人列表)
FriendsService 語意模糊,身兼兩份工作:
FriendsService (聯絡人列表)
FriendsService vs AvatarService
File
...
...
...
Page Service
根據 use case
操作 Repository 層
操作 Storage
隱藏去哪拿的細節
只接觸 Service
只接觸 Repository
使用 Observer 向上通知
interface == use case
interface == 要持久化的所有 CRUD
不可向上使用!
UserRepository
RosterRepository
ChatRoomRepository
FileRepository
AvatarRepository
PreferenceRepository
Note: 不要直接改 instance
File
Pref
...
...
...
Service
根據 use case
操作 Repository 層
操作 Storage
隱藏去哪拿的細節
不接觸 Repository
boundary 不會超出 entity 範圍
boundary 只會是 Aggregate
不會超出 entity 範圍
use case == interface
interface == 要持久化的所有 CRUD
照 Entity 區分 Repo
File
Pref
...
...
...
Service
根據 use case
操作 Repository 層
操作 Storage
隱藏去哪拿的細節
不接觸 Repository
boundary 不會超出 entity 範圍
boundary 只會是 Aggregate
不會超出 entity 範圍
有些 Aggregate 在 Repo
有些 Aggregate 在 Service
如何區分?
hide chat room (delete file)
in Service both Repository?
set avatar update status
in Repository?
File
Pref
...
...
...
Service
根據 use case
操作 Repository 層
操作 Storage
隱藏去哪拿的細節
不接觸 Repository
boundary 不會超出 entity 範圍
boundary 只會是 Aggregate
不會超出 entity 範圍
想成只有一個 Storage
要持久化的東西都經過他
1use case => 多 repo interface
hideChatRoom => showStatus == 0
hideFile => delete local DB/File
缺點:思維的轉換
need update => updateStaus == 0
interface == 要持久化的所有 CRUD
hide chat room (delete file)
in Service both Repository?
set avatar update status
in Repository?
File
Pref
...
...
...
Service
根據 use case
操作 Repository 層
操作 Storage
隱藏去哪拿的細節
不接觸 Repository
boundary 不會超出 entity 範圍
boundary 只會是 Aggregate
不會超出 entity 範圍
Notification Service?
Badge Service?
UserService
View
Controller
app.DB / Xmpp
Repository
View
Controller
app.DB / Xmpp
Repository
UserService
ChatService
FriendsService
FileService
AvatarService
ChatService
ChatsService
FriendsService
ChatService
ChatsService
FriendsService
UserRepository
RosterRepository
ChatRoomRepository
FileRepository
AvatarRepository
PreferenceRepository
一種資源定義一種 Repository
Page Service
Page Service
不可向上使用!
Shared
Shared
View
Controller
Page Service
app.DB / Xmpp
Repository
View
Controller
app.DB / Xmpp
Repository
ChatService
UserService
FriendsService
FileService
AvatarService
ChatService
ChatsService
FriendsService
ChatService
ChatsService
FriendsService
Notify Subscriber
UserRepository
RosterRepository
ChatRoomRepository
FileRepository
AvatarRepository
PreferenceRepository
Page Service
不可向上使用!
Notify Subscriber
Notify Subscriber
Notify Subscriber
Notify Subscriber
一種資源定義一種 Repository
Shared
Shared
View Logic
desktop muc
需要為每個元件建立 Component
desktop uc