系統領域物件設計,希望大家探討
本人在做郵件訊息傳送程式,目前可以按2種方式傳送訊息,
1.internet email
2.站內訊息
於是定義了一個Message介面,以及EmailMessage和站內訊息(StationMessage)的實現類。
又有2種生成message的方式:鍵盤敲進去和選擇模板
於是又定義了一個MessageRender介面
和 鍵盤輸入(SimpleMessageRenderImpl),模板郵件輸入(TemplateMessageRenderImpl)2個實現類
然後又定義了一個MessageSender介面和 MailMessageSenderImpl, StationMessageSenderImpl 2個傳送
訊息的實現類
按照開-閉原則,這個設計是合理的。
有2個疑問:1.MailMessageSenderImpl不可能傳送StationMessage,同樣StationMessageSenderImpl 不可能
傳送EmailMessage, 因此這種是不是屬於過渡設計??到底有沒有必要把站內訊息傳送和email訊息傳送寫在同一個模組裡??
2.關於MessageRender, SimpleMessageRenderImpl或者StationMessageSenderImpl至少返回一個Message的具體實現類
方式1:
interface MessageRender {
Message getEmailMessage();
Message getStationMessage();
} 然後SimpleMessageRenderImpl,TemplateMessageRenderImpl 分別實現
方式2:
interface MessageRender {
Message getMessage();
}
需要4個實現類SimpleEmailMessageRenderImpl,SimpleStationMessageRenderImpl,
TemplateMailMessageSenderImpl,TemplateStationMessageRenderImpl.
方式一缺點:當再來一種其他Message實現的話,又得在MessageRender裡面加一個方法Message getOtherMessage();
然後分別在各實現類裡面編寫,修改的太多了
方式二缺點:類太多
希望大俠解惑
1.internet email
2.站內訊息
於是定義了一個Message介面,以及EmailMessage和站內訊息(StationMessage)的實現類。
又有2種生成message的方式:鍵盤敲進去和選擇模板
於是又定義了一個MessageRender介面
和 鍵盤輸入(SimpleMessageRenderImpl),模板郵件輸入(TemplateMessageRenderImpl)2個實現類
然後又定義了一個MessageSender介面和 MailMessageSenderImpl, StationMessageSenderImpl 2個傳送
訊息的實現類
按照開-閉原則,這個設計是合理的。
有2個疑問:1.MailMessageSenderImpl不可能傳送StationMessage,同樣StationMessageSenderImpl 不可能
傳送EmailMessage, 因此這種是不是屬於過渡設計??到底有沒有必要把站內訊息傳送和email訊息傳送寫在同一個模組裡??
2.關於MessageRender, SimpleMessageRenderImpl或者StationMessageSenderImpl至少返回一個Message的具體實現類
方式1:
interface MessageRender {
Message getEmailMessage();
Message getStationMessage();
} 然後SimpleMessageRenderImpl,TemplateMessageRenderImpl 分別實現
方式2:
interface MessageRender {
Message getMessage();
}
需要4個實現類SimpleEmailMessageRenderImpl,SimpleStationMessageRenderImpl,
TemplateMailMessageSenderImpl,TemplateStationMessageRenderImpl.
方式一缺點:當再來一種其他Message實現的話,又得在MessageRender裡面加一個方法Message getOtherMessage();
然後分別在各實現類裡面編寫,修改的太多了
方式二缺點:類太多
希望大俠解惑
相關文章
- 智慧領域物件設計物件
- 請教大家一個支付系統領域物件建模中類提取的問題物件
- 六西格瑪在農業領域的應用探討
- 關於領域驅動設計,大家都理解錯了
- 程式設計師有必要了解營銷嗎?大家探討一下程式設計師
- 領域驅動設計戰術模式--值物件模式物件
- 戲說領域驅動設計(二十)——值物件物件
- 智慧領域物件設計(演繹革命)-1/2物件
- 領域驅動設計實踐:支付系統建模 - Xiao
- 探討分散式ID生成系統分散式
- 基於物件導向(OO)的資料庫設計模式探討物件資料庫設計模式
- 領域物件與業務邏輯關係設計思路物件
- 智慧領域物件設計(例項講解)-2/2物件
- DDD領域驅動設計:領域事件事件
- 深入探討JavaScript函式物件JavaScript函式物件
- Bash 例項:探討 ebuild 系統(轉)UI
- Android設計模式探討--Builder模式Android設計模式UI
- Android設計模式探討 Builder模式Android設計模式UI
- 一起探討JavaScript的物件JavaScript物件
- 探討工廠模式的物件建立模式物件
- DDD-領域物件與領域服務物件
- 請問大家如何設計物件池?物件
- 探討系統中?錢的精度問題
- <ddd--領域驅動設計學習>討論--------倉儲
- 領域驅動設計戰術模式--領域事件模式事件
- 戲說領域驅動設計(廿五)——領域事件事件
- Android設計模式探討--單例模式Android設計模式單例
- Android設計模式探討 單例模式Android設計模式單例
- 物件導向系統設計物件
- 領域驅動設計之實戰許可權系統微服務微服務
- 領域驅動設計在重構業務系統中的實踐
- 如何進行“資料採集系統”的領域驅動設計
- 基於物件導向(OO)的資料庫設計模式探討,第 2 部分物件資料庫設計模式
- 海爾熱水器溫控功能改進探討與嵌入式軟體領域分析
- 領域驅動設計戰術模式--領域服務模式
- 「譯」一起探討 JavaScript 的物件JavaScript物件
- 理解領域驅動設計
- MasaFramework -- 領域驅動設計Framework