我正在寫在那裏用戶帳戶創建我想要的一系列事件發生的應用 - 送大禮,發送電子郵件,等等。我的問題是你有沒有一個解決辦法是什麼像這樣的結構性問題,依賴注入?,觀察者?或者你是否創建了一個可以處理所有這些事件的方法?我們有一個用戶註冊服務,但是我擔心我們添加更多隨機依賴的事件越多。OOP建築師一系列基於用戶創建事件
回答
這聽起來像一個良好的情況下使用ActiveRecord的回調
網址:http://guides.rubyonrails.org/active_record_callbacks.html
我讀到決定哪個回調符合你的情況,然後讓其中包含所有「系列活動的」擔心你想要發生。此外,包括對需要它的模型的關注。
希望它有幫助!
每次創建用戶時,都不一定要運行回調。有些情況下數據庫記錄創建不等於註冊。例如在單元測試中。所以,最好分離數據庫操作(在活動記錄中)和業務邏輯。 –
欣賞輸入。 –
有關用戶註冊它的價值發佈一個域事件由不同的子系統來處理。因此,你的對象是完全分離的。但事件驅動架構有其價格 - 這是一種難以調試和理解的方式,需要一定的紀律。
如果脫鉤不是目的,你可以用額外的行爲包裹服務中使用Decorator模式:
registration_service = WellconeNotification.new(UserRegistration.new)
registration_service.call(params)
這裏的關鍵思想是分離的依賴和參數。我發現爲參數的依賴和方法參數使用構造函數非常方便。
這種方法意味着有點難依賴管理和親切的服務定位器。我建議看一下幹容器和幹汽車寶石。
編寫所有的代碼在一個服務對象可能是合理的第一步,如果你沒有很多的業務邏輯或仍在收集的要求。
- 1. 維基建築師框架
- 2. 正道建築師將用戶添加
- 3. 創建基於另一列
- 4. 創建基於另一列
- 5. 基於正規建築
- 6. 用於建築
- 7. 用於建築
- 8. 從JavaScript Enterpreise建築師
- 9. Sencha建築師:擴展Ext.form.field.Picker
- 10. 如何建立這個建築師
- 11. 日曆實施,可重複的事件,建築師的方法
- 12. 建築師與導軌應用程序
- 13. Sencha建築師3不使用app.css
- 14. 煎茶建築師使用Ext.ux.ToolbarDroppable
- 15. 根據事件序列創建關係
- 16. 創建基於列表
- 17. 創建基於三列
- 18. 創建基於陣列
- 19. 創建基於兩列
- 20. 創建基於列表
- 21. 基於唯一值創建列
- 22. 基於下一行創建新列
- 23. 創建一列基於密集觀察
- 24. Highcharts創建用於列圖的系列
- 25. 創建基於列的條件
- 26. 基於兩個條件創建列表
- 27. ADOBE DTM - 基於活動CSS創建基於事件的規則
- 28. 創建一個基於用戶配置文件利益
- 29. 創建基於用戶的姓
- 30. 建築socket.io基於服務器結構
** **觀察員:不,他們已被棄用,這是很難找到,如果觀察的對象。 **註冊服務**(服務對象):絕對!如果你有這種模式,你可以簡單地創建將在註冊服務(例如被稱爲其他服務對象:在'RegistrationService#perform'你可以稱之爲'放在userRegistration :: SendWelcomeEmail.new(self.user).perform如果自我。 user.allow_email_reception?') – MrYoshiji