iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 19
0
Software Development

Ruby 研究 30 天系列 第 19

Day 18 - Singleton Class 上篇

  • 分享至 

  • xImage
  •  

singleton class

今天我們會以圖示來演繹 singleton class 的概念:

想像一下,今天有一個物件被某個類別 new 出來時, Ruby 就幫你再宣告一個 隱形的class ,這個隱形的 class 會繼承原 class , 然後印出這個物件。

https://ithelp.ithome.com.tw/upload/images/20191122/20120823XQ1uFRevU2.png

這時我們會這麼描述 singleton method

https://ithelp.ithome.com.tw/upload/images/20191122/20120823buw5K0RJU9.png

那繼承呢?
我們已經把一條印出的實線,加上一條印出的虛線以及繼承的虛線,現在來湊湊看繼承吧!

https://ithelp.ithome.com.tw/upload/images/20191122/20120823TTBgIuEj8U.png

我們現在知道 class 也是物件,所以也是由別的 class 所印出來的。當然圖中的 Klass 以及 Superklass 也不例外。

https://ithelp.ithome.com.tw/upload/images/20191122/20120823ZTs4f7jx3Y.png

那麼 A 和 B 分別是什麼呢?
就直覺來說會覺得 A 可以填 Class ,反正任何 class 都是由 Class 印出來的,但如此便會發現找不到 B 要填什麼?如果也填 Class 的話變成 Class 繼承 Class ,這有點不太合理。

其實仔細想想,我們現在認為每個物件都是由一個只跟自己對應的 隱形的class 所印出,像是 Klass 有一個隱形的 Klass (圖右下角),那麼以此類推 A 就是 隱形的 SuperKlass

接下來就比較簡單了,假定 SuperKlass 沒有另外繼承自別的 class ,那麼上一層就是 Object ,另外,這些隱形的 class 是我們想像的輔助,任一個 class 依然是由 Class 印出來的,所以上圖藍色的實線事實上並不存在,接著,我們就一口氣把圖畫完吧!

https://ithelp.ithome.com.tw/upload/images/20191122/20120823BUBiMNZEAM.png

假想了一天,明天就實際用 code 來驗證一下吧!

此文同步刊登於CJ-Han的網站


上一篇
Day 17 - Singleton Method
下一篇
Day 19 - Singleton Class 中篇
系列文
Ruby 研究 30 天30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言