2011年6月27日 星期一

Effective Java 讀書筆記: Item 4 - 避免 class 生成物件的做法

記錄讀書心得, 內容不一定和書上一致, 有些是我自己的看法。

有時會會需要一堆 static methods 或 members, 而不需生成物件, 像是寫一堆數學函式。但 Java 規定所有東西都要放在 class 裡, 只有 method, 沒有 function。所以, 需要寫這類功能時, 為了確保使用 API 或開發 API 的人不會不小心生成物件, 記得要封印 constructor:
  • 明確寫 default constructor, 並設存取級別為 private, 防止 API 使用者生成物件
  • 在 default constructor 裡丟出 exception, 避免開發 API 的人生成物件
第二點附帶的好處是, 讓這個 class 無法被繼承。不過這附帶好處滿弱的, 不如在 class 前加上 final 來得明確。

沒有留言:

張貼留言

C++ 能否用 memcpy 複製 class / struct 的資料?

答案是: POD (plain old data) type 可以。POD type 可和 C 互通, CPP Reference POD Type 的介紹: Specifies that the type is POD (Plain Old Data) type. Thi...