Re: [問題] 有關inner class的概念

看板java作者 (sbr)時間17年前 (2009/01/10 16:29), 編輯推噓1(101)
留言2則, 1人參與, 最新討論串4/4 (看更多)
※ 引述《LeoSW (易─雪)》之銘言: : 嚴格來說我要做的功能應該比較像是Composite Pattern而不是Strategy Pattern : 大概把我的架構做個說明: : 有一個SuperClass(寫好的 不能改) : 以及很多已經有的(寫好的可以改 但是希望不要改太多) : SubClassA extends SuperClass : SubClassB extends SuperClass : SubClassC extends SuperClass : 現在想要的是說 : 每一種SubClass各有一個Object : 然後對每一個SubClass的Object依序做同一件事情 : 如果今天沒有 最後只能有一個Class的限制的話 : 那很直覺的作法就是: : class NewSubClass extends SuperClass{ : void NewMethod(){ : SuperClass[] list = new SuperClass[number]; : /*for each list[i] = new SubClassX();*/ : for(int i=0;i<list.length;i++){ : list[i].method(); : } : } : } : 可是這樣就會有很多個Class : 而不是環境限制的只可以有一個Class : 當然你的方法也是可以做到同樣的效果 : 只是當要對所有的class做同一件事情時 : 就得寫成一長串了 : 不曉得這樣子有沒有其他的辦法呢? 不以迴圈的方式來一一 invoke SubClassX 的特定 method,改成 hard code 對多個 object 的操作,這部分是可以使用程式來幫你產生程式碼。(許多韌體程式會把要 display 的點陣圖 pixel data 寫在程式碼裡,為什麼就不麻煩?) 如果考慮到把多個 SubClassX 合併成單一個 NewSubClass 之後,因為每個 SubClassX 的 field/method 被改名是有規則的,那麼上面使用迴圈的作法就可以 改成利用 reflection 機制來做,不需要一一 hard code 每一個 method invocation statement。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.173.136.165

01/10 20:48, , 1F
嗯我知道你的意思 所以也想說大概會這樣做
01/10 20:48, 1F

01/10 20:49, , 2F
謝謝你的回應 :)
01/10 20:49, 2F
文章代碼(AID): #19Q5nn5Q (java)
文章代碼(AID): #19Q5nn5Q (java)