我們知道,一般的物件導向語言,都會有類,而類成員一般有三種訪問許可權:公開,保護,私有。
有些人說,「保護」似乎沒有什麼價值,還建議不用。
有些人卻認為,沒有「保護」,舉步維艱。
我覺得,「保護」屬於類庫維護者,而「公開」屬於類庫使用者。只要我們明白這兩個身份的不同,就好理解該如何使用「保護」了。
比如,你本身是類庫的設計者,或者是團隊設計者之一,那麼你也可能自己做自己的類庫維護者。但是類庫維護者並不好當。從介面的角度,「保護」成員對類庫維護者來說是屬於「介面」級別的,所謂介面,就要維持他的不變性。我們要維持介面的不變性,非常難,唯一的辦法就是儘量減少「介面」,將不必要的封裝起來。但是「保護」成員卻將很多成員轉化成了介面,必然會讓**的維護量指數飆公升。所幸的是,你和你的團隊牢牢控制著類庫**,想怎麼改就怎麼改。
但,如果你並不是類庫的設計者,結果會相當麻煩。因為你用到「保護」後,類庫的設計者如果改變「保護」成員,就破壞掉你的**。因此他們絕對不應該去改變「保護」的成員,這對於他們來說是乙個很大的負擔。
因此,你要使用「保護」,你就必須承擔「類庫維護者」的風險,你的**就要承擔比只是「類庫使用者」更大的修改風險。
這也是為什麼有些人提倡完全不用「保護」的原因。
那為什麼還是有很多類庫願意冒風險去使用「保護」成員呢?保護相對於公開,代表了兩種層次,乙個是具體實現,乙個是抽象介面。人們想用「保護」,是為了有機會修改實現。如果沒有「保護」,只能從新建立乙個實現,而不能修改原有的實現。這對很多情況是相當麻煩的。
總的來說,我是贊成,盡量少用「保護」,有些時候,通過其他一些方法,也能區域性改變實現,而不需要完全建立新的實現,又能避免「保護介面」的維護的。
關於Web前端密碼加密是否有意義的總結!
http下是否有加密登陸密碼的必要 起因 是乙個90後團隊搞的乙個流氓公司,做 mac 下的盜版應用商場,被罵了一通,同時調侃 http 協議明文傳輸使用者名稱密碼,太低階。後來有個人站出來,提出 前端對資料進行加密沒有意義 這個觀點。後來就是的罵戰了。無意義說 密碼在前端加密完全沒有意義,對密碼系...
關於Web前端密碼加密是否有意義的總結!
起因 是乙個90後團隊搞的乙個流氓公司,做 mac 下的盜版應用商場,被罵了一通,同時調侃 http 協議明文傳輸使用者名稱密碼,太低階。後來有個人站出來,提出 前端對資料進行加密沒有意義 這個觀點。後來就是的罵戰了。無意義說 密碼在前端加密完全沒有意義,對密碼系統的安全性不會有任何提高,反而會引發...
關於洗澡前先被放掉的那些冷水是否具有意義的討論
第一本部分 前述 這個問題的出現很順理成章,冬天洗澡前,精確計算著開關的大小和位置,赤身 等待著冷水慢慢變熱,在這一過程中,寒冷讓思考變得更加乾淨和高效,神經也變得敏銳起來。當我的手感受冷水的溫度時,這些涼水存在的意義就變得模糊起來。或者說,他們的存在是的具有意義的嗎?第二部分 剖析問題的內容 秉著...