封裝不是意味著與世隔絕,事實上大部分類都需要提供公共接口以便外部使用自己或通信,封裝的本意是盡可能保持外部無關操作的封閉性,但是必要的接口常常是無可避免的。
所以問題的關鍵不是是否使用了public的set或get,而是set是否設計的足夠合理,能夠保持最低限度的數據修改使用,同樣,get能否保持最低限度的接口數據讀取。
比如說:一個窗口類,如果不通過一個方法將用戶所期待的窗口屬性傳遞給窗口類,窗口就無法完成描畫,而當窗口屬性變化時,窗口的當前屬性有必要現行獲取以獲得較高的描畫效率(位置,顏色,風格等是否需要變化)。
是否對set或get進行限製取決於類的設計,如果set或get的數據對象均為類內部的話使用那就定義成protect(繼承類)或private(基類),如果需要與外部交換那就定義成為public如果兩者都有,建議定義成
1.set,get公共,
2.setProtect,getProtect
3.setPrivate,getPrivate
將訪問對象分別放入個自己的訪問範圍所在的方法中。
所以問題的關鍵不是是否使用了public的set或get,而是set是否設計的足夠合理,能夠保持最低限度的數據修改使用,同樣,get能否保持最低限度的接口數據讀取。
比如說:一個窗口類,如果不通過一個方法將用戶所期待的窗口屬性傳遞給窗口類,窗口就無法完成描畫,而當窗口屬性變化時,窗口的當前屬性有必要現行獲取以獲得較高的描畫效率(位置,顏色,風格等是否需要變化)。
是否對set或get進行限製取決於類的設計,如果set或get的數據對象均為類內部的話使用那就定義成protect(繼承類)或private(基類),如果需要與外部交換那就定義成為public如果兩者都有,建議定義成
1.set,get公共,
2.setProtect,getProtect
3.setPrivate,getPrivate
將訪問對象分別放入個自己的訪問範圍所在的方法中。