傳入參數和回調取值

來源:互聯網
上載者:User

標籤:使用   問題   cti   div   初始化   value   

例如類A調用類B。

A有屬性a,B也需要用到。因為B需要多次使用a,每次使用參數傳遞,會很麻煩。此時一種方法是A通過一個方法把a傳給B,例如B.setValue(a),其中B.b = a。此時的問題是a和b的值是一樣的,有冗餘;而且可能A修改了a,但忘了通知b;或者其他類調用了B.setValue修改了b,但a並沒有改變。另一個問題是如果先執行了具體操作,之前並沒有setValue,那行為就是錯誤的。另一種方法是A提供一個方法getValue。然後把A傳給B(更好的方法是一個由A實現的只包含getValue的介面傳給B),然後B可以調用A.getValue(或更好的Interface.getValue)來擷取。好處是只有一份變數,壞處是增加了B對A(或者是A實現的介面)的依賴。 對於前者的一個改進是把這些設定放在建構函式中。如果無法在建構函式中設定,那也應該在有明確含義的初始化函數,類似initialize,activate中設定。這樣子調用者A會記住調用,而且其他類也不太容易誤調用。特別是有多個這樣的屬性,可以放在同一個方法中設定,免得多個方法設定導致漏調。 一個判斷原則是a是否也是B的一個屬性。如果是的話,那在其中定義是好的;如果不是的話,那麼從A中擷取是恰當的。

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.