
最簡單的解法,就是把A拆成兩個Package,使用B的放在A1,被B使用的集中在A2,這樣就可以讓循環使用的現象變為圖中的單向使用。可是實際遇到的情況大多都因為Package的內聚力過高而無法乾淨地分為兩個Package。
嘗試了幾種有問題的方式後,我提出右圖的解法:在B裡定義一個A2功能的介面(注意:這個介面屬於B),A維持原來使用B的動作,但內部原本要分割成A2的部分使之實作B提供的介面,如此一來A使用B與A實作B都可以是由上往下的使用關係。
軟體是一項工程,計算機是一門科學,你是否以正確的態度看待自己開發的系統呢?跳脫”用程式做功能”的思維升華到”用程式做工具”再"用工具做功能"同時"自動化產出文件"。堅信特定方法能讓敏捷開發與CMMI精神兼容並存,所以提出可以實現的作法!這裡放著我自2005/10以年來運用OOAD開發系統的設計心得,以及同時聯想到人在世上應抱持的態度……
沒有留言:
張貼留言