看板 OOAD 關於我們 聯絡資訊
看了一些設計模式跟物件導向的書,都會提到一個觀念就是 多用合成,少用繼承 之後,自己在寫程式時有嘗試著多使用合成去取代繼承 但是發現被合成物件(物件C、D)要取得合成物件(物件A)的資料時都會很不方便 EX. // 物件A class objectA{ public static shareResources; public attr1; public attr2; public objectC; //合成的物件C public objectD; public function func1(){...} public function func2(){...} } // 繼承物件A的物件B class objectB extend objectA{ ~~~~~~~~~~~~ ~~~~~~~~~~~~ } 可能同樣的物件內容B跟C,但實際上當要取得物件A的資料時 物件B可以很直覺的直接使用物件A的屬性或間接使用方法來取得資料。 但物件C就很麻煩了,變成我可能必須在A Class的建構式中時就要把資料 想辦法塞到C物件,搞到後來變成當D物件也需要相同資料時,我又得重複 塞相同的資料到物件D。 暈!! 後來,我都是直接在物件A設了一個名為shareResources的陣列並宣告為Static, 再把所有共用資源都往那個陣列塞。 然後,無論合成物件或繼承物件都可以直接取用物件A的資料了。 不曉得做法好不好,有沒有大師提供更聰明的方法?? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.36.190.152
adrianshum :一看到 static 就大概可以預期99.9%是錯的手法 03/15 22:38
AndyLeo :這code不像Composite,可以到wiki看文章 04/11 11:43
AndyLeo :少了Common的Interface,只是單純宣告物件 04/11 11:46