iT邦幫忙

2024 iThome 鐵人賽

DAY 13
0
JavaScript

大樂透對獎系列 第 13

封裝

  • 分享至 

  • xImage
  •  

物件導向經常談到封裝,然而,封裝的對象或意圖其實是多元的,也許是想隱藏狀態、不曝露實作、遮蔽資料的結構、管理物件複雜的生命週期、隔離物件間的相依關係等,大部分情況下,封裝都意謂著某種程度的隱蔽性,藏起什麼東西之類的。

作為一個資料載體時,只是單純地將某些資料組合為一個概念,例如將兩個小數組合為點的概念,這些資料在名稱、結構,以及聚合後的名稱都是透明的,物件在外觀表現上就是會曝露一切,物件本身提供的API,會與物件想表現的資料合在一起。

這使得資料載體的封裝,與其他的封裝意圖大相徑庭,因為就其他封裝的意圖來說,往往會希望物件本身提供的API,能夠隱藏物件內部的資料等東西,資料載體本身的意圖就是曝露資料的一切。

有時候你就是需要一個物件來表示資料,這就表示你需要的是個資料載體,然而在record類別出現之前,無論是哪種封裝,基本上是透過class來定義,這就造成了過去簡單的需求,也需要囉嗦的定義過程,可以試著只使用class來定義出Point類別,要有公開的x、y(以及hashCode、equals以及toString等方法),是需要一定行數的程式碼吧。


上一篇
封裝
系列文
大樂透對獎13
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言