2016-05-10 28 views
0

假設我們有一個帶有selectOneMenu的UI,其中包含兩個項目basiccustomized。讓class DocumentController負責生成所選類型的PDF文檔(basiccustomized)。設計改進

很明顯,UI的擴展(例如新項目)導致class DocumentController的修改。因此,class DocumentController違反開閉原則,這意味着它也違反了單一職責原則

我解決基礎上,職責鏈設計模式的這個問題的辦法,所以我對每個項目創建的selectOneMenu一個單獨的類。現在,應用程序對擴展是開放的,但對於修改而言是封閉的,每個類都負責完成一件事。

現在我的問題是如何管理新類的不相交和commen數據。是責任鏈設計模式適合這個問題嗎?

謝謝你的任何建議

+0

難道你不能只是做一個DocumentController的抽象?然後,「新項目」不會修改現有的類,而只是擴展抽象。 –

回答

1

...負責生成PDF文檔...

什麼不同思考這一點,並允許控制器委託給一個抽象工廠,它有基本的和定製的實現?這樣你就可以安全地進入SOLID領域。