1、關於代理對象的設計小技巧 在設計一個類,需要通過代理和協議來從外部獲取需要的動態的數據。那麼在這裡設計使用代理會有兩種方法。 <第一種方法> 也是比較常見的: 在你設計的類中,聲明一個代理屬性 然後外部使用的時候 最後根據那個<...Protocol>協議,去遵循這個協議並實現協議的方法。 <第 ...
1、關於代理對象的設計小技巧
在設計一個類,需要通過代理和協議來從外部獲取需要的動態的數據。那麼在這裡設計使用代理會有兩種方法。
<第一種方法> 也是比較常見的:
在你設計的類中,聲明一個代理屬性
然後外部使用的時候
最後根據那個<...Protocol>協議,去遵循這個協議並實現協議的方法。
<第二種方法>在創建這個你要設計的類對象的構造方法中添加一個代理對象的參數,目的就是按照需要,你如果要創建這個對象,你必須添加代理對象。
這樣外部在創建這個對象的時候,使用這個方法就暗中強制性的需要你添加這個代理對象
然後因為通過self設置當前對象為代理,如果這個代理對象遵循了協議但是沒有實現協議的方法,就會警告提示你要實現協議方法。
總結:第一種方法大家都很熟悉,但是對於第二種方法也是某些特殊的情況必要的設計方法,這個方法也是源自我開發中遇到的一個情況:一個類中需要實時判斷當前設備的網路狀態,但是如果使用第一種方法設計這個類的話,用戶端在使用這個類,可能會忽略設置代理對象,這樣是不嚴謹的,是容易出bug的,所以採用第二種設計方法,可以限制用戶端在使用這個對象就必須實現設置代理對象。
具體使用方法一還是方法二,還是要根據實際開發情況來定奪和設計。