作者autumnk (3O6p)
看板OOAD
標題[問題] 破壞封裝 疑惑?
時間Tue May 3 20:54:42 2016
小弟對於物件導向的封裝研究了一陣子
基本的封裝概念都看得差不多了
如get、set,或是使用private
資料隱藏、透過對外的介面來修改內部值
但總是覺得少了點什麼,沒有很融會貫通
找了很多資料,但都講得很基本
會覺得對封裝沒有完全懂,是看到有一篇文章
指出使用相依性注入會稍微破壞封裝
我的理解是,因為使用建構式時,會有帶入值,
而這個值會改變我設定為私有的成員變數。
而這個改變並不是透過我設定的對外介面來改變的
,所以破壞了封裝。
我的理解是正確的嗎?
要怎麼樣才算破壞了封裝?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.134.59.89
※ 文章網址: https://webptt.com/m.aspx?n=bbs/OOAD/M.1462280085.A.4C6.html
1F:→ adrianshum : DI破壞封裝沒聽過,倒是getter/setter 才是真的破壞 05/03 23:13
2F:→ adrianshum : 封裝吧 05/03 23:14
3F:→ qrtt1 : 請附上你讀到的書的參考資料,跟上下文唄 :P 05/04 00:21
4F:→ GoalBased : 我是覺得OO是拿來用的,不是拿來當學問的 05/04 00:54
5F:→ GoalBased : 封裝的概念在OO裡面算是最好理解和感受的了(個人意 05/04 00:55
6F:→ GoalBased : 見) 你有了知識後有做些東西嗎? 05/04 00:55
7F:→ GoalBased : google了一下關鍵字"DI 破壞封裝" 05/04 00:57
8F:→ GoalBased : 看到一篇是說"濫用DI的情況下" 05/04 00:59
9F:→ GoalBased : 你的理解我會說是對的,多一點補充的話是說,如果 05/04 01:05
10F:→ GoalBased : 你注入的東西本來就是private是只有該class內部自 05/04 01:05
11F:→ GoalBased : 己在玩的東西本就不希望開放給外部知道,結果你 05/04 01:06
12F:→ GoalBased : 今天卻用DI的方式來處理,那當然是破壞封裝了 05/04 01:06