多型, DDD如何體現
Account類有withdraw, deposit兩個方法,是放在Account類的裡面還是外面?
方案一:
Account代表我的賬戶,代表我的一個身份,那麼當然是一個主動的物件。
Account取錢,存錢是裡所當然的。withdraw, deposit兩個方法應該是Account的方法。呼叫方法:
account.withdraw(money) account.deposit(money) <p class="indent"> |
方案二:
Account就是戶頭,就是一個被動的金額資料記錄。
User每次申請銀行管理機構(出納),AccountManager來操作這個Account。
呼叫方法:
AccountManager.withdraw(account, money) AccountManager.deposit(account, money) <p class="indent"> |
如果只存在一種Account型別的情況下(比如只有銀行櫃檯賬戶),那麼程式設計上沒有根本的區別。只是這個加錢、減錢的動作的位置不同 -- 是在Account裡面做,還是在AccountManager裡面做。
在有多個Account型別的情況下,那情況就大不一樣了。
比如,有電子信用卡遠端帳戶 ECardAccount,有櫃檯存摺賬戶PaperAccount。這兩種賬戶的業務規則都是不同的。
比如,電子信用卡遠端帳戶的取錢,要收取一定比率的手續費,而櫃檯存摺賬戶就不需要。
這個時候,兩種劃分方法的程式設計上的優劣,就體現出來了。
按照第一種方案,只要為相同的Account介面,實現兩個不同的類,ECardAccount,PaperAccount,分別實現不同的withdraw,deposit就可以了。
第二種方法,就有些麻煩了。需要在AccountManager裡面用一個 if else,或者switch來判斷Account的型別,是ECard信用卡,還是Paper存摺。
這兩個方法都涉及到資料庫的操作。
各位,如果是DDD,怎麼處理?
相關文章
- Go 如何實現多型Go多型
- 什麼是Java多型?如何實現Java多型?Java多型
- TypeScript如何實現DDD的值物件?TypeScript物件
- 實現多型多對多 幾個注意點多型
- 多型記憶體圖解多型記憶體圖解
- Python 3.6:多型的實現Python多型
- 多型體驗,和探索爺爺類指標的多型性多型指標
- 如何實現DDD事件建模的詳細步驟 - goeleven事件Go
- DDD實體值物件的equals和hashcode方法實現 - wimdeblauwe物件
- Java實現DDD中UnitOfWorkJava
- IOS多型別Cell的tableView實現iOS多型型別View
- C++ 多型的實現及原理C++多型
- aardio 實現封裝繼承多型封裝繼承多型
- Java多型實現的必要條件Java多型
- C語言實現繼承多型C語言繼承多型
- 反DDD模式之關係型資料庫模式資料庫
- 多型~多型
- 多型。多型
- 多型多型
- [MAUI程式設計]介面多型與實現UI程式設計多型
- java中介面多個實現類,如何指定實現類,根據子類型別選擇實現方法Java型別
- 使用Spring Data JDBC實現DDD聚合SpringJDBC
- Java 介面實現多型 -- 膝上型電腦綜合例項Java多型
- 如何實現多執行緒執行緒
- Redis如何實現多可用區?Redis
- 可落地的DDD(4)-如何利用DDD進行微服務的劃分(2)微服務
- MMD-0043-2015 - 多型型ELF惡意軟體:Linux/Xor.DDOS多型Linux
- 多型性多型
- Java多型Java多型
- 11 #### 多型多型
- 多型,向上向下轉型多型
- 多執行緒具體實現執行緒
- 多雲已成現實,企業如何更好地實現多雲管理?
- DDD | 03-什麼是實體物件物件
- 向領域驅動設計前進: 如何使用DDD實現從單體到微服務遷移? -Kevin Mas Ruiz微服務UI
- 我們如何從DDD中受益? 第二部分| Shinetech軟體
- GitHub - kgrzybek/modular-monolith-with-ddd: DDD單體模組化架構.NET案例原始碼GithubMono架構原始碼
- 多種資料庫型別管理軟體:DBeaverUltimate中文資料庫型別
- JavaScript如何實現多執行緒?JavaScript執行緒