來自《 api design for c++ 》
1. 有效性驗證(可以在setter裡檢查設定的值是否在許可區間裡)
2. 惰性求值(比如乙個成員計算過於耗時,而這個類的使用者(這裡的使用者指其他程式設計師)不一定需要時,可以在
getter
方法呼叫的時候再計算)
3. 快取額外的操作(比如使用者呼叫setter方法時,可以把這個值更新到配置檔案裡)
4. 通知(其它模組可能需要在某個值發生變化的時候做一些操作,那麼就可以在setter裡實現)
5. 除錯(可以方便的列印設定日誌,從而追蹤錯誤)
6. 同步(如果多執行緒訪問需要加鎖的話,setter裡加鎖不是很容易麼)
7. 更精細的許可權訪問(比如private變數只有
getter
沒有setter,那客戶對該變數就是唯讀了,而類的內部**可以讀寫)
8. 維護不變式關係(比如乙個類內部要維持連個變數a和b有a = b * 2的關係,那麼在a和b的setter裡計算就能維持這樣的關係)
我再說個,還可以不對外暴露內部的資料組織方式,即使類資料的組織結構發生變化也不需要修改外部使用者的**。
setter方法和getter方法
oc是一門物件導向的語言,物件導向的語言有三大特性,就是封裝性,繼承性和多型性.類的資料與功能的封裝,資料就是成員變數,功能就是類方法或者物件方法,對資料的封裝,也就是對成員變數的封裝,封裝就是把資料隱藏起來,只能用此類的方法才可以讀取或者設定資料,不可被外部任意修改是物件導向設計本質,降低了資料被...
setter和getter記憶體處理
person.m import person.h implementation person 析構函式 void dealloc 建構函式 id initwithname nsstring name score nsarray score return self void setname nsstr...
getter 和 setter的運用
1 set 有且僅有乙個引數 2 get不允許有任何引數 var obj set有且僅有乙個引數 setc value 不允許有任何引數 getc setinterval function 16 如果僅有set,沒有get,這個屬性就是只寫屬性 如果僅有get,沒有set,這個屬性就是乙個唯讀屬性 ...